Как вывести количество символов, если не менее 10 - PullRequest
0 голосов
/ 02 мая 2019

В основном, код предназначен для получения некоторого пользовательского ввода и вывода общего количества символов, но, как только он достигает 10, он печатает символ ascii вместо фактического количества введенных символов.

Я знаю, что мне нужно вычесть 10 из общего количества и для каждых 10 вычтенных, добавить 1 в другой регистр или переменную и вывести это как значение 10 с, но не могу понять, как это настроить. Я совершенно новичок в этом, но попробовал несколько других вещей, но я не совсем понял, что я делал, поэтому не могу их объяснить. В настоящее время он печатает количество символов, если 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

Если пользователь вводит: «Переполнение стека», программа должна сказать, что всего 14 символов.

...