我对汇编非常新,并且在使用scanf获取用户输入时尝试添加循环内部。这是我的循环:
.data
.balign 4
format: .asciz "%d"
.balign 4
numCount: .word 0
.balign 4
counter: .word 0
.balign 4
prints: .asciz "%d\n"
.text
.global main
main:
ldr r5, =counter
mov r6, #0
bl loop
done:
ldr r0, =prints
//mov r1, r5
ldr r1, [r5]
bl printf
mov r7, $1
svc $0
loop:
ldr r0, =format
ldr r1, =numCount
bl scanf
ldr r1, =numCount
add r6, r6, #1
add r5, r5, r1
cmp r6, #5
beq done
b loop
退出循环后,我尝试使用ldr r1, [r5]
打印总和数(存储在r5?中),但是这会出现seg错误。如果我mov r1, r5
它打印地址(我认为?),比如630150.我也尝试在添加之前将ldr r5, [r5]
和ldr r1, [r1]
放在循环中但是这个段也出错了。当我尝试将寄存器的引用加载到另一个寄存器时,我怎么会出现段错误?