原始程序只取用户输入的最后一个字符并在控制台上显示。我试图扩展它,以便通过等待用户按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}}
答案 0 :(得分:0)
您需要将输入的字符复制到缓冲区中,并在想要显示时循环缓冲区。什么是"显示"您的代码是ENTER键。