start
read
BL getkey ; read key from console
CMP R0, #0x0D ; while (key != CR)
BEQ endRead ; {
BL sendchar ; echo key back to console
CMP R0, #' ' ; if (ro = ' ')
BNE nocount ;{
ADD R7, R7, #1 ; r7 += 1
LDR R4, =0 ; r4 = 0
nocount ;}
MOV R6, R0 ; Store input in R6
SUB R6, R6, #'0' ; Convert from decimal to hex
MULS R4, R5, R4 ; If there is another input, multiply total by 10
ADDS R4, R4, R6 ; Add the input to the total
ADD R8, R4, R8 ;sum
B read
endRead
end
stop B stop
END
Salut, J'essaie d'avoir mon code alors quand il y a un espace entré dans la console, 1 sera ajouté à R7 et R4 seront mis à 0.ARM Assembly, l'enregistrement n'étant pas défini sur 0?
Quand un espace est ajouté , R4 est mis à 0xFFFFFFF0, mais quand j'ajoute '5' à ceci, j'obtiens 0xFFFFFFF65. Je m'attends à juste obtenir 0x00000005. C'est bizarre, parce que quand je mets la même commande en dehors de la comparaison, ça marche. Toute aide est appréciée, merci.
Aussi je veux que r8 soit la somme des nombres entrés, il ne semble pas fonctionner correctement, quelqu'un peut-il me dire pourquoi?
Je ne suis pas, je n'ai pas inclus cette partie du code. Chaque fois qu'il y a une entrée, j'enlève '0'. –
OK - vous devez fournir un [mcve]. –
BEQ n'est-il pas le mauvais test de branche? Quand 'espace' est entré, il saute les 2 lignes. –