This is LC3 Assembly code I am working with
.ORIG x3000
LOOP LDI R0, KBSR
BRzp LOOP
From LC3 Assembly, I know that LDI is a load indirect addressing mode, meaning it read in an address stored at an location and then read the value at that location
From Lc3 Keyboard, I know that KBSR is the keyboard status register, which is one when keyboard has received a new character.
Here is my test run in Lc3 simulator? I entered the character 'a'
After executing LDI R0, KBSR, register 0 stores a value of -32768.
Does anyone know, based off my definitions for ldi and KBSR where this number is coming from? I was expecting something like 1 to be stored because the keyboard has received a new character.
In KBSR (keyboard status register) bit 15 is set when a key is read, so you get 0b1000_0000_0000_0000
(or 0x8000
) ... which - interpreted as a 2's complemented negative number - happens to be -32768 decimal.
来源:https://stackoverflow.com/questions/30017878/where-is-32768-coming-from