0
pointr: .word pointr
mov #pointr,r0
mov pointr,r1

有人可以解释值 r0 和 r1 之间的区别吗?

4

1 回答 1

1

TL;DR - r0 和 r1 将保持相同的值,但这只是因为第一行中的初始化

让我们逐条说明:

pointr: .word pointr

这意味着“在地址 X 中定义一个名为 'pointer' 的标签,并将标签的值(在本例中为 X)放在该地址中”。所以在地址 X 中有一个字持有值 X。

mov #pointr,r0

这意味着“将标签'pointr'的值(在本例中为地址X)移动到r0”。所以 r0 将保存值 X,因为 'pointr' 是该地址的标签。

mov pointr,r1

这意味着“将位于标签'pointr'(在本例中也是X)地址中的值移动到r1”。由于代码第一行的“.word 指针”部分,因此 r1 将保存值 X。

澄清一下,如果我们要替换第一行代码得到:

pointr: .word pointr+2 mov #pointr,r0 mov pointr,r1

r0 的值不会改变(与原始代码相比),但 r1 的值会改变。

于 2019-03-08T14:01:16.683 回答