小弟认为答案错了,请各位看看!!(高程题目)

jjfzjg 2003-09-29 07:05:04
1999年试题四〖程序4.2〗
子程序 SUM 是将存贮字 A 起的 n(n>0) 个字求和,并将结果存于存贮字 B 中。
调用该子程序时,主程序在 GR1 中给出存放子程序所需参数的起始地址。参数的存放次序如下图:


(GR1)+0 A
+1 n
+2 B


[程序4.2]

START
SUM LD GR2,0,GR1
LD GR3,1,GR1
LEA GR0,0
L5 ADD GR0,0,GR2
LEA GR2,1,GR2
_ (4) _ //lea gr3,-1,gr3
JNZ L5
L3 __(5) //???????????
ST GR0,0,GR3
RET
END

我认为是 LEA GR3,2,GR1
但是答案:
(5) 应把结果单元地址B 赋给 GR3:LD GR3,2,GR1

明明是把地址 赋给GR3,为什么把B的值赋给GR3?
...全文
88 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwzjg 2003-10-24
  • 打赏
  • 举报
回复
这种题目就是考的你的概念清不清楚!

注意:地址---地址指向的值
jjfzjg 2003-09-30
  • 打赏
  • 举报
回复
up
chenyun122 2003-09-30
  • 打赏
  • 举报
回复
TO pebble(铿锵石头):
不好意思,是我想错了。看到ADD GR0,0,GR2这一句就应该想到ADD指令对象是寄存器和地址,所以 LD GR2,0,GR1 载入的是地址,同理LD GR3,2,GR1载入的也是地址,所以答案正确。
pebble 2003-09-30
  • 打赏
  • 举报
回复
to chenyun122(边城狂屠)
首先,应该注意到A就是一个地址,那是一系列数值的起始地址
而n呢是一个实际的数值,是A开始的地址的一系列数值的个数,这两个是不一样的
另外,看下面两句
ADD GR0,0,GR2 ;把GR2地址单元的一个数字和GR0相加,
LEA GR2,1,GR2 ;对GR2加一,也就是准备加下一个数字
也说明GR2实际存放的是一个地址,
chenyun122 2003-09-30
  • 打赏
  • 举报
回复
我认为jjfzjg (jjf)是对的,答案是错的。
因为大家看程序的第二、三行:
SUM LD GR2,0,GR1
LD GR3,1,GR1
是把A、n的值载入到GR2、GR3,
同理如果用语句:LD GR3,2,GR1也是把B的值载入到GR3,而不是地址,所以是错误的。
zjcsdnjp 2003-09-30
  • 打赏
  • 举报
回复
B所对应的内寸中才是存放了数组的起始地址.
luost 2003-09-30
  • 打赏
  • 举报
回复
答案是对的,由题目可知(5)中语句是要讲B对应内容的地址放入GR3,地址(GR1+2)是参数B的地址,不是B对应存储数据的地址,所以要再到内存去找,所以是LD,不是LEA
zhan_yonghua 2003-09-30
  • 打赏
  • 举报
回复
看到汇编比较烦,友情UP
pebble 2003-09-29
  • 打赏
  • 举报
回复
看上面题目:主程序在 GR1 中给出存放子程序所需参数的起始地址
也就是说GR1+2是一个地址,这个地址对应的存储单元中存放了"存储字B"的地址

如果用 LEA GR3,2,GR1
那么下面的 ST GR0,0,GR3
实际上把最后的和寸入了存放B的地址的那个存储单元

2,947

社区成员

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

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