【发布时间】:2015-07-12 12:24:32
【问题描述】:
这是基于这个问题 LEA instruction
这是我有疑问的代码段
.ORIG X3700
LEA R0, A
.....
A .FILL X1234
@Paul R,回答者,说“代码的来源是 x3700,你有 12 条指令,所以 A 的地址将是 x3700 + x0C = x370C。如你所料,LEA R0,A 加载将 A 的地址写入 R0,因此在执行第一条指令后,R0 将包含 x370C。”
我同意保罗所说的第一部分,他对为什么 A 的地址是 x370C 的推理。这就说得通了。
我对下一部分感到困惑,即“LEA R0,A 将 A 的地址加载到 R0”。这是我参考的关于 LEA 指令的幻灯片。 Lc3 LEA, 5-23
与 ADD 和 AND 指令不同,LEA 指令只有一种模式。(参考指定了 ADD 和 AND 两种模式。
从这个图中,LEA 的第二部分,A 应该是 PCoffset 9。但是,A 的值是 4660(十进制),A .FILL X1234,超出了 PCoffset 9 的范围,即 -256 到255)。
谁能解释发生了什么?我是否使用了错误的图表作为参考?还有其他 LEA 模式吗?
【问题讨论】:
标签: assembly load cpu-registers computer-architecture lc3