我试图重写一个程序,该程序回应每次按下ENTER键时用户键入一行的内容

时间:2015-08-03 22:17:32

标签: assembly lc3

原始程序只取用户输入的最后一个字符并在控制台上显示。我试图扩展它,以便通过等待用户按ENTER键显示一行时间。 例如,如果用户键入:  "你好世界" 然后它等待用户按下回车并在控制台上显示它。

但是当我运行它时它不显示任何东西。

当前代码:

.ORIG x3000
  LD R2, LINE
LOOP4  LEA R3, MEM 
LOOP  LDI R0, KBSR ; Load the value of the KBSR into R0
  BRzp LOOP ; If KBSR[15] = 0, no key has been pressed
  LDI R0, KBDR ; Copy the waiting character from the KBDR to R0
  STR R0, R3, #0; copy the wating character into R3

LOOP2 LDI R1, DSR ; Load the value of the DSR into R1
  BRzp LOOP2 ; If DSR[15] = 0, the display is not ready
  ADD R3, R3, #1 ; update storage location
  ADD R2, R0, #-10 ;checks for return key
  BRz loop3
  BRnp LOOP

loop3 STI R3, DDR ; Copy the character in R3 to the Data display register
  ADD R3, R3, #-1
  BRP loop3
  BRz LOOP4


HALT
DSR .FILL xFE04
DDR .FILL xFE06
KBSR .FILL xFE00
KBDR .FILL xFE02
MEM .BLKW 64 
LINE .fill #10
.END

我试图扩展的代码:

{{1}}

编辑1 8/3/15 6.21pm: 所以我现在得到这些奇怪的符号。 我不确定角色是否在内存位置。 我从R3中减去回路,这样我可以显示该寄存器中的所有字符,但我得到这些奇怪的符号,我不知道他们来自哪里。 Weird symbols on console

新代码:

{{1}}

1 个答案:

答案 0 :(得分:0)

您需要将输入的字符复制到缓冲区中,并在想要显示时循环缓冲区。什么是"显示"您的代码是ENTER键。