我试图在同一行输入单个字符作为字符串,然后在带有字符串的行上输出该字符。我已经尝试了GETC和PUTC,但我得到的结果是' 0我对这个LC-3的东西真的很陌生,并且非常感谢帮助克服这个障碍。
这是我到目前为止所拥有的。
.ORIG x3000 ;start assembly directive
MyMain
lea r0, input ;point to input string
trap x22 ;print string out
GETC
ld r0, newLine ;get <crlf>
trap x21 ;print it out
lea r0, output ;point to output string
trap x22 ;print string out
PUTC
ld r0, newLine ;get <crlf>
trap x21 ;print it out
lea r0, term ;point to termination string
trap x22 ;print string out
ld r0, newLine ;get <crlf>
trap x21 ;print it out
MyMainEnd trap x25 ;stop the program
; constants
newLine .FILL x0A ;line feed and Carriage return in LC-3
input .STRINGZ "Please input a character: "
output .STRINGZ "You input the character: "
term .STRINGZ "Program execution terminated!"
.END ;end assembly directive
答案 0 :(得分:1)
以下是GETC的文档
GETC - 从键盘上读取单个字符。该字符不会回显到控制台上。其ASCII码被复制到R0中。 R0的高8位清零
你的问题是使用R0作为ld r0的所有内容,newline将破坏你读入的字符。在你调用GETC陷阱之后,你需要将R0的值复制到其他寄存器中,然后当你执行时将其移回R0想打电话给PUTC。
同样根据您的问题,您需要两次致电PUTC。紧接在GETC之后,然后输出换行符后。