pointr: .word pointr
mov #pointr,r0
mov pointr,r1
有人可以解释一下值 r0 和 r1 之间的区别吗?
TL;DR - r0 和 r1 将保持相同的值,但只是因为第一行的初始化
让我们逐条指令分解一下:
pointr: .word pointr
这意味着"在地址 X 中定义一个名为'指针'的标签,并将标签的值(在本例中为 X(放在该地址中"。因此,在地址 X 中有一个包含值 X 的单词。
mov #pointr,r0
这意味着"将标签'指针'的值(在本例中为地址 X(移动到 r0"。所以 r0 将保存值 X,因为"pointr"是这个地址的标签。
mov pointr,r1
这意味着"将标签'指针'(在本例中也是 X(地址中的值移动到 r1"。因此,r1 将保留值 X,因为代码中第一行的".word 指针"部分。
澄清一下,如果我们要替换第一行代码来获取:
pointr: .word pointr+2
mov #pointr,r0
mov pointr,r1
R0 的值不会改变(与原始代码相比(,但 R1 的值会改变。