如何在LC3 /汇编代码程序中打印字符数量

时间:2016-05-06 07:05:04

标签: lc3

基本上我的代码会让我输入一些文字,然后它会打印回我输入的内容。因为它在我输入文本时代码是奇怪的符号,但打印我实际输入的内容。除此之外,我想知道如何让程序打印输入的字符数,并显示该数字(输出)

.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

1 个答案:

答案 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的地址之间的差异。还有其他几种选择:你是设计工程师。