微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何计算以地址 x3100 加载 R1 的偏移量?

如何解决如何计算以地址 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 举报,一经查实,本站将立刻删除。