使用ARM在循环中打印数字

时间:2014-03-14 02:14:07

标签: assembly arm

我是初学的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"

1 个答案:

答案 0 :(得分:0)

  

bl printf;如何在调用后返回循环的其余部分   此?

假设这是问题,你会在bl printf之后返回指令 来自printf内部。这通常是通过bx lr完成的。重要的细节是当您执行bl时,branch with link指令cpu保存lrr14)寄存器中下一条指令的地址。这使您可以通过将链接寄存器移动到程序计数器来轻松返回到上一个下一条指令。