基本上我的代码会让我输入一些文字,然后它会打印回我输入的内容。因为它在我输入文本时代码是奇怪的符号,但打印我实际输入的内容。除此之外,我想知道如何让程序打印输入的字符数,并显示该数字(输出)
.orig x3000
Lea r1, storeString
Lea r0, PrintStudent
puts
Lea r0, EnterText
puts
LOOP
getc
str r0, r1, 0
add r1, r1, 1
add r0, r0, -10
brz OUTSIDE
out
brnzp LOOP
OUTSIDE
Lea r0, UserEnter
puts
Lea r0, storeString
puts
Halt
PrintStudent .stringz "Hi it's me"
EnterText .stringz "\nPlease enter a text: "
UserEnter .stringz "\nThe text you have typed is: "
storeString .blkw 99
.end
答案 0 :(得分:0)
这就是为什么它存储正确但打印错误的原因:
GETC # r0: new character
STR r0,r1,0 # r0: new character, mem[r1]: new character
ADD r1,r1,1 # increments pointer for storage
ADD r0,r0,-10 # r0: new character - newline, i.e. "a"--> "W"
OUT # prints the input character - newline
基本上,将它“移出”在减量和分支之上,然后你就可以了(除了它现在也会打印换行符)。
要知道你已经使用了多少个字符,你可以在输入循环中单独计算,或者你可以计算r1和循环结束时storeString的地址之间的差异。还有其他几种选择:你是设计工程师。