高程之CASL专题,以99下午第4题为例

文飞扬 2003-08-30 09:13:58
START
BEG PUSH 0,GR2
PUSH 0,GR3
LEA GR3,1
(1)
L1 SLL GR2,1
(2)
LEA GR3,1,GR3
L2 JZE L3
JMP L1
L3 (3)
ST GR3,WORK
ADD GR1,WORK
POP GR3
POP GR2
RET
WORK DS 1
END
答案为:
1。LEA GR2,0,GR1
2。FPZ L2
3。SLL GR3,15
问题:
1。第二行和三行的压栈语句有什么作用?
2。(GR2)=4与GR2=4有何区别?
3。第一空表示将GR1的内容送到GR2,结果为(GR2)=1还是GR2=1,我觉得应该是
LD GR2,0,GR1。
请高手指点。

...全文
55 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
文飞扬 2003-09-01
  • 打赏
  • 举报
回复
to smuwcwt:
(GR1)=>(0+(GR2))
将GR1中的内容送入GR2所指的地址。
smuwcwt 2003-09-01
  • 打赏
  • 举报
回复
那ST GR1,0,GR2又是怎么保存数值的呢?请高手指教。
smuwcwt 2003-08-30
  • 打赏
  • 举报
回复
学习学习
cloudinwind 2003-08-30
  • 打赏
  • 举报
回复
这是一个子函数,肯定要用压栈了,(GR2)是GR2的地址。
bobble 2003-08-30
  • 打赏
  • 举报
回复


果然是高手,不同凡响!
谢了!
pldchild 2003-08-30
  • 打赏
  • 举报
回复
关于(GR1)和GR1问题是个习惯写法问题。如LEA GR2,0,GR1是把GR1的内容赋给GR2,一般写成(GR1)=>GR2。这样LD GR2,0,GR1(把GR1所指的内存单元的内容赋给GR2)就应写成((GR1))=>GR2。
但有时为了省事,也有写成GR1=>GR2和(GR1)=>GR2。
不管用那一种习惯写法。自己头脑中的概念要清楚。
pldchild 2003-08-30
  • 打赏
  • 举报
回复
关于(GR2)=4和GR2=4问题是个习惯写法问题。如LEA GR2,0,GR1是把GR1的内容赋给GR2,一般写成(GR1)=>GR2。这样LD GR2,0,GR1(把GR1所指的内存单元的内容赋给GR2)就应写成((GR1))=>GR2。
但有时为了省事,也有写成GR1=>GR2和(GR1)=>GR2。
不管用那一种习惯写法。自己头脑中的概念要清楚。
bobble 2003-08-30
  • 打赏
  • 举报
回复
我是这样想的,不知道对不对,请高手指正:

1)压栈作用:本程序要用到GR2和GR3,但GR2和GR3中的内容在此程序运行完还有用,用堆栈将其 保存下来,此程序运行完还需恢复其内容;
2)(GR2)=4是将立即数4赋给GR2所指的内存区,GR2=4操作是将立即数送到寄存器GR2
3)LEA GR2,0,GR1 是对的,此操作结果:E->GR2;若是LD GR2,0,GR1,则结果为:(E)->GR2
孰是孰非,不言自明矣.

2,947

社区成员

发帖
与我相关
我的任务
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证c4javac4前端 技术论坛(原bbs)
社区管理员
  • 软件水平考试社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧