-32768 来自哪里?
Where is -32768 coming from?
这是我正在使用的 LC3 汇编代码
.ORIG x3000
LOOP LDI R0, KBSR
BRzp LOOP
从LC3 Assembly了解到LDI是一种load indirect addressing mode,意思是读入一个存储在某个位置的地址,然后读取该位置的值
从 Lc3 Keyboard得知,KBSR是键盘状态寄存器,是键盘接收到一个新字符时的寄存器。
这是我在 Lc3 模拟器中的测试 运行?我输入了字符'a'
执行LDI R0、KBSR后,寄存器0存入-32768的值。
根据我对 ldi 和 KBSR 的定义,有人知道这个数字是从哪里来的吗?我原以为会存储类似 1 的内容,因为键盘收到了一个新字符。
在 KBSR(键盘状态寄存器)中,当读取一个键时,第 15 位被设置,所以你得到 0b1000_0000_0000_0000
(或 0x8000
)...这被解释为一个 2 的补负数- 恰好是 -32768 十进制。
这是我正在使用的 LC3 汇编代码
.ORIG x3000
LOOP LDI R0, KBSR
BRzp LOOP
从LC3 Assembly了解到LDI是一种load indirect addressing mode,意思是读入一个存储在某个位置的地址,然后读取该位置的值
从 Lc3 Keyboard得知,KBSR是键盘状态寄存器,是键盘接收到一个新字符时的寄存器。
这是我在 Lc3 模拟器中的测试 运行?我输入了字符'a'
执行LDI R0、KBSR后,寄存器0存入-32768的值。
根据我对 ldi 和 KBSR 的定义,有人知道这个数字是从哪里来的吗?我原以为会存储类似 1 的内容,因为键盘收到了一个新字符。
在 KBSR(键盘状态寄存器)中,当读取一个键时,第 15 位被设置,所以你得到 0b1000_0000_0000_0000
(或 0x8000
)...这被解释为一个 2 的补负数- 恰好是 -32768 十进制。