3

我对这个问题感到困惑:指令“LEA R0,A"执行后寄存器 0 中存储的值是什么?为什么答案是 x370C ?我认为它应该将A的地址加载到R0中?如果是,我们怎么知道地址?有人可以帮忙吗?非常感谢!

.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

6

代码的来源是x3700,你有 12 条指令,所以地址Ax3700 + x0C = x370C。如您所料,LEA R0,A加载Ainto的地址R0,因此R0将包含x370C在执行第一条指令之后。

        .ORIG X3700
3700     LEA R0, A
3701     LDI R2, C
3702     LDR R3, R0, 2 
         ...
370b     RET

370c     A .FILL X1234
         ...
于 2014-09-16T10:47:24.630 回答