pointr: .word pointr
mov #pointr,r0
mov pointr,r1
有人可以解释值 r0 和 r1 之间的区别吗?
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 的值会改变。