了解程序集基本代码


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 的值会改变。

相关内容

  • 没有找到相关文章

最新更新