ARM 汇编指令:(六) B 跳转指令

目录

一.B 和 BL        

 1.B/BL指令的语法格式

 2.示例解析


一.B 和 BL        

        跳转指令 B 使程序跳转到指定的地址执行程序。指令 BL 将下一条指令的地址复制到 R14(即返回地址连接寄存器 LR)寄存器中,然后跳转到指定地址运行程序。

 1.B/BL指令的语法格式

B{L}{<cond>} <target_address>

2.示例解析

① 程序跳转到 LABLE 标号处。

B LABLE ;
ADD R1,R2,#4
ADD R3,R2,#8
SUB R3,R3,R1
LABLE:  //pc会直接跳到这里执行
SUB R1,R2,#8

② 跳转到绝对地址 0x7890处。

B 0x7890

③ 跳转到子程序 func 处执行,同时将当前 PC 值保存到 LR 中。

BL func

④ 条件跳转:当 CPSR 寄存器中的 C 条件标志位为 1 时,程序跳转到标号 LABLE 处执行。

BCC LABLE ;
ADD R1,R2,#4
ADD R3,R2,#8
SUB R3,R3,R1
LABLE:  //pc会直接跳到这里执行
SUB R1,R2,#8

⑤ 通过跳转指令建立一个无限循环。

LOOP:
ADD R1,R2,#4
ADD R3,R2,#8
SUB R3,R3,R1
B LOOP

⑥ 通过使用跳转使程序体循环 10 次。

MOV R0,#10
LOOP:
SUBS R0,#1
BNE LOOP

这里大家要注意,我要啰嗦一句:能够影响指令条件码的是CRSP的那几位,有符号减法,也会影响到CRSP,所以这里跳转指令B的条件码是被subs的结果所影响。

⑦ 条件子程序调用示例。

…
CMP R0,#5 ;如果 R0<5
BLLT SUB1 ;则调用
BLGE SUB2 ;否则调用 SUB2

下一页:ARM 汇编指令:(七) STM/LDM多寄存器加载/多存储指令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值