assembly - oxidasa - Bucle infinito en el ensamblaje del brazo



citocromo oxidasa (0)

Mi ciclo while es un ciclo infinito, y no entiendo por qué no se produce. Parece que r3 nunca se incrementa. ¿Me estoy perdiendo algo obvio? Se supone que cmp resta r5 de r3, que debería ser igual a 0 eventualmente y desencadenar beq, que debería saltar a addSum:

.section    .rodata
input:
.ascii "Enter number:\000"
output:
.ascii "Sum:%d\n\000"
inputformat:
.ascii "%d\000"

.section    .data
.align 4
.comm   intarray,20,4 /*allocates 20 bytes(4 bytes per int)*/
.comm   sum,4,4 /*allocates 4 bytes for an integer */
.comm   temp,4,4

.text
addrinput:
.word input
addroutput:
.word output
addrinputformat:
.word inputformat
addrintarray:
.word intarray
addrsum:
.word sum
addrtemp:
.word temp

.global main
main:
stmfd sp!, {r4,r5,fp,lr}
ldr r4,addrintarray
mov r3,#0
while:
mov r5,#5
cmp r5,r3
beq addSum
ldr r0,addrinput
bl printf
ldr r0,addrinputformat
ldr r1,addrtemp
bl scanf
mov r5,#1
add r3,r3,r5
bal while
addSum:
ldmfd sp!, {r4,r5,fp,pc}




arm