LEA指令如何存储A的地址?
How does LEA instruction store address of A?
这是基于这个问题 LEA instruction
这是代码段我有一个问题
.ORIG X3700
LEA R0, A
.....
A .FILL X1234
@Paul R,回答者,说"The origin of the code is x3700, and you have 12 instructions, so the address of A will be x3700 + x0C = x370C. As you guessed, LEA R0,A loads the address of A into R0, so R0 will contain x370C after that first instruction has been executed."
我同意Paul所说的第一部分,他对A地址是x370C的推理。这就说得通了。
我对下一部分感到困惑,即 "LEA R0, A loads the address of A into 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模式吗?
任何时候您将 PCoffset 视为操作码操作数
LEA R2, A ; Loads the memory location of A into R2
; LEA, DR, PCoffset9
它告诉您,当您的代码被汇编时,它实际上并没有将标签 'A' 放入您的 LEA 命令中。
取下面的代码:
.ORIG X3700 ; Not a code line in the simulator, only used by the assembler
LEA R0, A ; Line 1, starting at x3700
HALT ; Line 2
A .FILL X1234 ; Line 3, located at x3702
.END ; Not a code line in the simulator, only used by the assembler
现在在模拟器中,LEA 行实际上是这样的:
1110 000 000000001 ; Opcode 1110 is LEA
; 000 is our register R0
; 000000001 gives us how many memory locations away A is
这就是偏移量的意思。它会询问 "How many blocks of memory is A away from me?" 问题,如果我们的变量 'A' 距离太多块,那么我们会得到一个错误,因为我们无法在偏移量中表示该值。
这是基于这个问题 LEA instruction
这是代码段我有一个问题
.ORIG X3700
LEA R0, A
.....
A .FILL X1234
@Paul R,回答者,说"The origin of the code is x3700, and you have 12 instructions, so the address of A will be x3700 + x0C = x370C. As you guessed, LEA R0,A loads the address of A into R0, so R0 will contain x370C after that first instruction has been executed."
我同意Paul所说的第一部分,他对A地址是x370C的推理。这就说得通了。
我对下一部分感到困惑,即 "LEA R0, A loads the address of A into 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模式吗?
任何时候您将 PCoffset 视为操作码操作数
LEA R2, A ; Loads the memory location of A into R2
; LEA, DR, PCoffset9
它告诉您,当您的代码被汇编时,它实际上并没有将标签 'A' 放入您的 LEA 命令中。
取下面的代码:
.ORIG X3700 ; Not a code line in the simulator, only used by the assembler
LEA R0, A ; Line 1, starting at x3700
HALT ; Line 2
A .FILL X1234 ; Line 3, located at x3702
.END ; Not a code line in the simulator, only used by the assembler
现在在模拟器中,LEA 行实际上是这样的:
1110 000 000000001 ; Opcode 1110 is LEA
; 000 is our register R0
; 000000001 gives us how many memory locations away A is
这就是偏移量的意思。它会询问 "How many blocks of memory is A away from me?" 问题,如果我们的变量 'A' 距离太多块,那么我们会得到一个错误,因为我们无法在偏移量中表示该值。