【问题标题】:Program will only print the first letter of user inputted string程序只会打印用户输入字符串的第一个字母
【发布时间】:2016-05-04 00:18:08
【问题描述】:

我正在尝试在 LC3 中制作一个程序,要求用户输入一个字符串并将继续打印出来。我的程序只能从用户输入的字符串中打印出第一个字母。例如,我输入“Hello”,它只会打印出“H”。有没有办法解决这个问题?谢谢

.orig   x3000
Lea r1, storeString

Lea r0, EnterText
puts

LOOP
getc

str r0, r1, 0
add r1, r0, -10
brz OUTSIDE

out
brnzp LOOP

OUTSIDE

Lea r0, UserEnter
puts

Lea r0, storeString
puts

Halt
EnterText .stringz "\nPlease enter a text: "
UserEnter .stringz "\nThe text you have typed is: "
storeString .BLKW 99

.end

【问题讨论】:

    标签: assembly lc3


    【解决方案1】:

    学习使用调试器。您在行尾检查期间覆盖 r1 (这是您的指针),而实际上您应该将其递增 1,以便它指向下一个字符的位置。你很幸运,这不只是爆炸。

    这样的事情应该会更好:

    LOOP
    getc
    
    str r0, r1, 0
    add r1, r1, 1    ; next character
    add r0, r0, -10  ; just subtract in place
    brz OUTSIDE
    
    out
    brnzp LOOP
    

    【讨论】:

      猜你喜欢
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多