【问题标题】:LC3 how do I print user input to screen?LC3 如何将用户输入打印到屏幕上?
【发布时间】:2016-05-08 05:07:21
【问题描述】:

这是我目前所拥有的:

.orig x3000

Lea r0, EnterString             
puts                    
LOOP                    
getc                    

add r1, r0, -10         ;subtract 10 to identified if enter is pressed
brz OUTSIDE             ;if yes, go out of the loop

out                 
brnzp LOOP              

OUTSIDE                 
Lea r1, InputString
puts

Lea r0, EnterString
out
Halt                    

EnterString .stringz "Please enter a string: "
InputString .stringz "\nThe text you have typed is: "

.end

我试图让用户输入最多 99 个字符,然后打印它,但是当我尝试打印输入的内容后,它只是在 InputString "\n你输入的文本是:" 之后打印一些奇怪的框.

我认为这可能与我不小心清理了我的 EnterString 有关? r0?

我快要对其进行排序了吗?

我想截图,但我的排名太低了。

【问题讨论】:

    标签: lc3


    【解决方案1】:

    您的一般方法不正确。这是你现在拥有的:

    Print out welcome string
    Get character
    If character is a newline, exit loop, otherwise get another character
    Print out "your string is"
    Output (incorrectly) welcome string again.
    

    PUTS 所做的只是获取存储在 r0 中的有效地址并打印其中的每个字符,一次一个,直到它到达一个 '\0' 字符。 GETC 所做的只是获取单个字符并将其存储到 r0 中。它不会创建堆栈或字符串,也不能存储多个字符。

    为了存储来自控制台的字符串,您需要定义一个放置它的位置并实际放置它。您需要创建一个BLKW,其中包含您要存储的字符数(加上空字符的空间),然后您需要:

    1. 将此BLKW的地址加载到寄存器中
    2. 将字符从r0移动到这个地址(提示:使用STR
    3. 增加地址,以便您仍然指向一个空位置

    为了再次打印出来,加载你的内存空间的有效地址并调用PUTS,就像你对欢迎字符串所做的那样。

    【讨论】:

    • 谢谢你
    猜你喜欢
    • 2021-12-23
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2018-10-14
    • 2013-05-28
    相关资源
    最近更新 更多