如果至少10

时间:2019-05-02 12:50:55

标签: assembly lc3

基本上,该代码用于接受用户输入,并输出总共有多少个字符,但是一旦达到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个字符。

0 个答案:

没有答案