我正在編寫一個程序,將從ARM彙編中的stdin中將5個整數加起來,但我到達一個無限循環,不知道爲什麼。無法擺脫ARM彙編中的無限循環
我開始了定義基本的東西
/*defines functions*/
.section .rodata
promptString:
.ascii "Enter numbers: \000"
readString:
.ascii "%d\000"
printSum:
.ascii "sum=%d\n\000"
/*global varibles*/
.section .data
.align 2
.comm string,4,4
.text
/*sets addresses*/
addrString: .word string
addrPromptString: .word promptString
addrReadString: .word readString
addrPrintSum: .word printSum
然後我開始我的主,有一個循環應持續5次迭代,而是我到一個無限循環
main:
stmfd sp!, {fp, lr}
mov r3,#0
mov r2,#0
mov r4,#5
loop:
cmp r3,r4
beq end
ldr r0, addrPromptString
bl printf
ldr r0, addrReadString
ldr r1, addrString
bl scanf
add r2,r2,r1
add r3,r3,#1
bl loop
end:
ldr r2, addrPrintSum
bl printf
ldmfd sp!, {fp, pc}
通過什麼我認爲是合理的邏輯,當r3達到5並且變得等於r4是5時,它應該跳到結尾。
但是顯然它沒有。
謝謝!
看起來像一個重複http://stackoverflow.com/questions/19440396/infinite-loop-in-arm-assembly – 2013-10-18 11:02:51