我无法弄清楚为什么After instruction “LDR R3, R0, 2” is executed, the value stored in R3 is x370C.
在这个指令中2代表什么?它看起来不像是一个临时价值。我知道R0此时包含x370C。有人可以帮忙吗?非常感谢!
.ORIG X3700
LEA R0, A
LDI R2, C
LDR R3, R0, 2
AND R1, R1, #0
IN
ST R0, D
JSR F
HALT
F LD R1, B
ADD R1, R1, #1
BRp F
RET
A .FILL X1234
B .FILL X370B
C .FILL X370C
D .BLKW 2
E .STRINGZ "ABCD"
G .FILL X1234
.END
答案 0 :(得分:3)
第二个参数是要加载的基址的偏移量。
我开始拍摄一些照片在这里发布并做出了很好的解释,但我发现了一个有趣的讲座视频,它比文字解释得更好,并且可以节省很多时间。
LC3 Instructions - LD, LDR, LDI, LEA
该视频解释了LC3的加载指令之间的差异,突出了它们之间的差异。
在你的例子中:
您有数据:
A .FILL X1234
B .FILL X370B
C .FILL X370C
运行代码:
LEA R0, A -- R0 has the address of A
LDI R2, C -- R2 has value of which address C has
LDR R3, R0, 2 -- R3 has the value of C
-- because R0 has the address of A + 2 positions = C