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
Привет, Я пытаюсь, чтобы мой код, когда есть пространство вошел в консоль, 1 будет добавлен R7 и R4 будет установлен в 0.ARM Assembly, регистр не установлен в 0?
При добавлении пространства , R4 установлен в 0xFFFFFFF0, но когда я добавляю '5' к этому, я получаю 0xFFFFFFF65. Я ожидаю получить только 0x00000005. Это странно, потому что когда я кладу ту же команду за пределы сравнения, она работает. Любая помощь приветствуется, спасибо.
Также я хочу, чтобы r8 была суммой введенных чисел, она, похоже, не работает должным образом, может ли кто-нибудь сказать мне, почему?
Я не, я просто не включил эту часть кода. Каждый раз, когда есть вход, я забираю его «0». –
ОК - вам нужно предоставить [mcve]. –
Не является ли «BEQ» неправильным тестом? Когда вводится «пробел», он пропускает 2 строки. –