3

我不明白为什么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
4

1 回答 1

3

第二个参数是要加载的基地址的偏移量。

我开始在这里拍一些照片并做一个很好的解释,但我发现了一个有趣的讲座视频,它比文字解释得更好,并且会节省很多时间。

LC3 指令 - 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
于 2014-09-16T12:21:35.293 回答