如何解决如何计算以地址 x3100 加载 R1 的偏移量?
这是我的代码。该程序要求用户输入一个数字并存储在 R3 中。然后它用存储在内存位置 x3101 - x3105 中的 5 个其他数字检查该数字。 (数字是2,2,4,4)
我相信我的问题与我的第二行有关。 “LD R1,x0030”。
我知道 x0030 是不正确的,我只是在玩它。我试图让它用 x3100 加载 R1,以便它可以在以后移动到 3101、3102 等等。
到目前为止的代码:
.ORIG x3000 ;0011 0000 0000 0000 ?
AND R5,R5,#0
LD R1,x0030
TRAP x23
LDR R4,R1,#0
ADD R2,R4,#-5
BRz #8
NOT R4,R4
ADD R4,#1
ADD R4,R3
BRnp #1
ADD R5,#1
ADD R1,#1
LDR R4,#0
BRnzp #-10
LD R3,#5
ADD R3,R3,R5
TRAP x21
TRAP x25
.FILL x3100
.END
.ORIG x3100
.FILL x0005 ; iteration number
.FILL x0032 ; number 2
.FILL x0032
.FILL x0034 ; number 4
.FILL x0034
.FILL x0034
.END
解决方法
为常量使用标签:
LD R1,myLabel
...
...
myLabel .FILL x3100
如果您使用这种方法,并且(通过汇编程序运行它,然后)将其加载到模拟器中,您将能够看到机器代码指令(x2210),具有达到所需的 PCOffset9 值.填充 x3100。如果需要,您可以将代码更改为适当的偏移量(此处为 x10,又名 #16)——但它比使用标签更脆弱,因此如果您进行后续更改,偏移量可能会更改。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。