0

我的while循环是一个无限循环,我不明白为什么它没有爆发。似乎 r3 永远不会增加。我错过了一些明显的东西吗?cmp 应该从 r3 中减去 r5,它最终应该等于 0 并触发 beq,它应该跳转到 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}
4

0 回答 0