LC-3 - 如何存储输入字符然后在字符串后输入和输出打印输入字符?

时间:2017-06-05 20:07:28

标签: lc3

我试图在同一行输入单个字符作为字符串,然后在带有字符串的行上输出该字符。我已经尝试了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

1 个答案:

答案 0 :(得分:1)

以下是GETC的文档

GETC - 从键盘上读取单个字符。该字符不会回显到控制台上。其ASCII码被复制到R0中。 R0的高8位清零

你的问题是使用R0作为ld r0的所有内容,newline将破坏你读入的字符。在你调用GETC陷阱之后,你需要将R0的值复制到其他寄存器中,然后当你执行时将其移回R0想打电话给PUTC。

同样根据您的问题,您需要两次致电PUTC。紧接在GETC之后,然后输出换行符后。