这是我正在使用的LC3汇编代码
.ORIG x3000
LOOP LDI R0, KBSR
BRzp LOOP
从LC3 Assembly开始,我知道LDI是一种加载间接寻址模式,这意味着它读取存储在某个位置的地址,然后读取该位置的值
从 Lc3 Keyboard开始,我知道KBSR是键盘状态寄存器,当键盘收到一个新字符时就是一个。
这是我在Lc3模拟器中的测试运行?我输入了字符'a'
执行LDI R0后,KBSR寄存器0存储值-32768。
有没有人知道,基于我对ldi和KBSR的定义,这个数字来自哪里?我期待存储类似1的东西,因为键盘已收到一个新角色。
答案 0 :(得分:3)
在KBSR(键盘状态寄存器)中,当读取一个键时,第15位被设置,因此你得到0b1000_0000_0000_0000
(或0x8000
)......这被解释为2被补充负数 - 恰好是-32768十进制。