-1

下面的 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" 
4

2 回答 2

1

大概DSR是一个内存映射寄存器,它显示输出设备何时忙碌(因此L2循环等待),DDR我猜是数据寄存器(无论你写什么都会有输出)。R0一次获取提示符的字符。

于 2014-09-17T01:38:25.207 回答
1

DSR 和 DDR 分别是指向内存位置 xFE04 和 xFE06 的指针。这些是 lc3 软件中内置的特定内存位置。您标记为 DSR 的那个代表显示“状态”寄存器。如果显示器不忙,这意味着它已准备好打印出单个字符,存储在内存位置 xFE04 中的值将是一个负值,您的循环 L2 将永远运行,直到它变为真。DDR 显示“数据”寄存器的作用是将您的数据存储在内存位置 xFE06 中,从而将您的数据打印在屏幕上。它们与 KBDR 和 KBSR 非常相似。

于 2015-11-10T02:40:12.530 回答