将汇编程序指令更改为更详细的指令 - 我做得对吗?

时间:2016-08-24 21:50:28

标签: assembly processor instructions addressing-mode

给出了以下的声明指令:

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,因为他说"预先减少"。

我希望一切都好吗?我希望我描述了我们个人的写作方式(我知道还有其他的写作方式,但是我们用这个......)

这不是作业,我只是要求理解它,我为自己的学习做了这个任务。

1 个答案:

答案 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。在你的情况下,我们真的不知道。