给出了以下的声明指令:
SUB[R1], 8[-R2]
计算此指令的表格:
op1 = op1 - op2
第一个操作数被寻址"间接注册"。第二个问题被解决了#34;注册索引"预先减少(" n[-Rx]
")。
我已将其更改为:
add #7, R2
sub [R1], [R2]
sub #8, R2
我试着解释为什么我这样做:
8[-R2]
也是这样写的:R2-1+8= R2+7
,所以我在开始时将7
添加到R2
。
下一行很清楚。
最后一行我从R2删除了8,因为他说"预先减少"。
我希望一切都好吗?我希望我描述了我们个人的写作方式(我知道还有其他的写作方式,但是我们用这个......)
这不是作业,我只是要求理解它,我为自己的学习做了这个任务。
答案 0 :(得分:2)
我在你的定义中看到了几个问题。
首先,指令有[-R2]
,因此计算此指令的形式必须包含该副作用:
op1 = op1 - op2
r2 = r2 - 1
您的说明中的另一个问题是它没有明确定义尺寸。看起来你认为它是一个字节。您可能需要查看68000处理器,它具有递增和递减以及定义明确的大小(与具有许多隐含大小的英特尔处理器相反。)
例如,如下所示将D1保存在堆栈上,做一些工作,然后弹出值,.L定义大小(LONG,4个字节):
MOV.L D1, -(SP)
...
MOV.L (SP)+, D1
在这种情况下,SP
寄存器将递减4,然后由于指令处理long而递增4。在你的情况下,我们真的不知道。