该程序应执行以下操作:
发布于 2022-09-04 18:34:21
我如何做
BSR SUBR
,并定义代码的SUBR部分?
如果不咨询程序员参考手册,您就无法解决这个任务
对于已经执行“分支到子例程”(BSR
)的BSR
指令,实际上没有什么可做的了。定义SUBR部分只需写下执行任务描述中概述的六个步骤的指令,然后执行“从子例程返回”(RTS
)。
为了让你上路,以下是第一步的详细说明
为了从数组中总结6字节,我们可以在数据寄存器中加载第一个字节,然后从循环中添加下一个5字节。
在循环之前,我们:
movea.l #DATA, a1
指令就是这样做的。moveq.l #5, d1
指令就是这样做的。要在-128范围内加载较小的数字,+127总是更喜欢moveq
而不是move
,因为它速度更快,编码更小。move.b (a1)+, d0
指令就是这样做的。由于该指令使用增量后寻址模式,并且由于大小属性是字节的,所以A1地址寄存器中的地址将自动增加1。这样我们就可以遍历数组。In循环我们:
add.b (a1)+, d0
指令就是这样做的。subq.l #1, d1
指令就是这样做的。为了在1,8范围内减去较小的数字,8总是倾向于subq
而不是sub
/subi
,因为它的编码比subi
小,而且比subi
快得多。bne.s loop1
指令就是这样做的。 movea.l #DATA, a1
moveq.l #5, d1
move.b (a1)+, d0
loop1:
add.b (a1)+, d0
subq.l #1, d1
bne.s loop1
我将加入下一个步骤,因为它是相当琐碎的
第1步将和留在D0数据寄存器中。只需将其移动到SUM1变量,但请确保使用正确的大小标记,即根据定义SUM1变量的方式使用.b
:
move.b d0, SUM1
祝你第三步到第六步好运。
https://stackoverflow.com/questions/73597316
复制相似问题