基本上,该代码用于接受用户输入,并输出总共有多少个字符,但是一旦达到10个字符,它将打印出ascii字符,而不是输入的实际字符数。
我知道我需要从总数中减去10,然后每减去10,就将1加到另一个寄存器或变量中,并将其打印为10s值,但是还不太清楚如何设置它。我对此并不陌生,但是尝试了其他一些方法,但是我不完全了解自己的操作,因此无法真正解释它们。当前它会打印9个或更少的字符数。是的,我很清楚这可能是非常糟糕的代码,但是任何帮助将不胜感激!
.orig x3000
;clear registers
and r0, r0, 0
and r1, r1, 0
and r2, r2, 0
and r3, r3, 0
and r4, r4, 0
and r5, r5, 0
and r6, r6, 0
and r7, r7, 0
Lea r0, EnterString
puts
LOOP
getc
add r1, r0, -10
brz END_LOOP
add r2, r2, #1
out
brnzp LOOP
END_LOOP
Lea r0, NumTens
puts
NEXTLOOP
add r2, r2, -10
brn END_NEXTLOOP
add r3, r3, #1
brzp NEXTLOOP
END_NEXTLOOP
Lea r0, NumChar
puts
ld r7, NumTensTotal
add r7, r7, r3
ld r0, compCharTotalOnes
add r0, r0, r2
out
Lea r0 FinSen
puts
Halt
EnterString .stringz "\nPlease enter a text: "
NumTens .stringz "\n"
NumChar .stringz "Totally, it has "
NumTensTotal .fill x30
compCharTotalOnes .fill x30
FinSen .stringz " characters including spaces"
.end
如果用户输入:“ Stack Overflow”,则程序应显示总共14个字符。