我是初学的ARM程序员,想知道如何在循环中打印数字。到目前为止,这是我的代码,
mov r3, #0
loop:
add r6, r6, #1
push {ip, lr}
ldr r0, =string
mov r1, r6
bl printf ; how do i get back to the rest of the loop after calling this?
pop {ip, pc}
cmp r6, #10
ble loop
.data
string: .asciz "number: %d\n"
答案 0 :(得分:0)
bl printf;如何在调用后返回循环的其余部分 此?
假设这是问题,你会在bl printf
之后返回指令
来自printf
内部。这通常是通过bx lr
完成的。重要的细节是当您执行bl
时,branch with link
指令cpu保存lr
(r14
)寄存器中下一条指令的地址。这使您可以通过将链接寄存器移动到程序计数器来轻松返回到上一个下一条指令。