以下LC3程序将打印出“Hello”。但有人可以帮助解释它为什么这样做吗?我很困惑,因为没有像PUTS这样的指令。它是否与将值加载到R0有关?谢谢!
LEA R1, PROMPT
L1 LDR R0, R1, #0
BRz FOO ; FOO is some other routine
L2 LDI R3, DSR
BRzp L2
STI R0, DDR
ADD R1, R1, #1
BR L1
DSR .FILL xFE04
DDR .FILL xFE06
PROMPT .STRINGZ "Hello"
答案 0 :(得分:0)
据推测DSR
是一个内存映射寄存器,显示输出设备何时忙(因此等待的L2
循环)和DDR
我猜是数据寄存器(无论你写什么)会有输出)。 R0
一次获取一个提示字符。
答案 1 :(得分:-1)
DSR和DDR分别指向内存位置xFE04和xFE06。这些是使用lc3软件构建的特定内存位置。标有DSR的那个代表显示" status"寄存器。如果显示器不忙,意味着它已准备好打印出单个字符,则存储在存储单元xFE04中的值将为负值,您的循环L2将永远运行,直到变为真。什么DDR显示"数据" register是否将您的数据存储在内存位置xFE06中,从而将数据打印在屏幕上。它们与KBDR和KBSR非常相似。