pointr: .word pointr
mov #pointr,r0
mov pointr,r1
有人可以解释值r0和r1之间的区别吗?
答案 0 :(得分:1)
TL; DR-r0和r1将保持相同的值,只是因为第一行中的初始化
让我们逐条说明:
pointr: .word pointr
这意味着“在地址X中定义一个名为'pointer'的标签,并将标签的值(在本例中为X)放入该地址”。因此,在地址X中,有一个单词包含值X。
mov #pointr,r0
这意味着“将标签'pointer'的值(在本例中为地址X)移动到r0”。因此r0将保留值X,因为“ pointer”是该地址的标签。
mov pointr,r1
这意味着“将位于标签'pointer'的地址中的值(在本例中也为X)移动到r1“。因此,由于代码第一行的“ .word pointr”部分,r1将保留值X。
为了澄清,如果我们要替换第一行代码来获取:
pointr: .word pointr+2
mov #pointr,r0
mov pointr,r1
r0的值将保持不变(与原始代码相比),但是r1的值将保持不变。