bne %B0的理解

==============================================================

   查了一下书,0~99应该称为局部标号。

   详见 ARM体系结构与编程 第147页

============================================================

昨天在看arm汇编,其中有这样的一段语句

0

         ldr    r3, [r0], #4

         str    r3, [r1], #4

         cmp r2, r0

         bne %B0

bne:不等于则调转

但%B0 ,网上搜了一遍,还是未果。从最后的汇编语言来看,%B 代表,往前搜索 lable为0的行,换句话说,就是指本条语句前,lable为0的地址。整条语句的意思就是,如果不相等则跳转到lable为0的行。

同样,有了bne %B0,也就有了bne %F1,这是向后搜索lable为1的行。参考代码:

; check if EIN0 button is pressed

       ldr       r0,=GPFCON

         ldr    r1,=0x0

         str    r1,[r0]

         ldr    r0,=GPFUP

         ldr    r1,=0xff

         str    r1,[r0]

         ldr    r1,=GPFDAT

         ldr    r0,[r1]

       bic      r0,r0,#(0x1e<<1) ; bit clear

         tst    r0,#0x1

         bne %F1

(省略一些语句)

;Clear SDRAM End

1

                ;Initialize stacks

         bl      InitStacks

总结一下 bne %B0,如果不相等则跳到本条语句前的lable为0的行。

     bne %F1,如果不相等则跳到本条语句后的lable为1的行。

你可能感兴趣的:(编程,汇编,语言,button)