当前位置: 首页 > article >正文

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多寄存器加载/多存储指令


http://www.kler.cn/a/271898.html

相关文章:

  • 2025年数学建模美赛:A题分析(1)Testing Time: The Constant Wear On Stairs
  • LINUX下设置分离状态(Detached State)和未设置分离状态的主要区别在于线程资源的管理方式和线程的生命周期。以下是两种状态的对比:
  • 汇编实验·地址表分支程序设计
  • DRG/DIP 2.0时代下基于PostgreSQL的成本管理实践与探索(下)
  • 常见的加密方式以及自定义加密工具
  • Java实现简易银行账户管理系统
  • Java12~14 switch语法
  • QT文件的读取与插入
  • 【Linux】进程与可执行程序的关系fork创建子进程写实拷贝的理解
  • 金枪鱼群优化算法TSO优化BiLSTM-ATTENTION实现风力发电功率预测(matlab)
  • 蓝桥杯--平均
  • [漏洞分析]Fortinet FortiNAC CVE-2022-39952简析
  • JavaScript BOM 的概念(浏览器对象模型)
  • 栈和队列(Java实现)
  • [Python初阶]2255.统计是给定字符串前缀的字符串数目
  • 关于前端打包加部署
  • python二级备考(2)-简单应用题
  • 九种背包问题(C++)
  • react-面试题
  • Python网络爬虫内容介绍
  • HTML静态网页成品作业(HTML+CSS)——家乡广州介绍设计制作(5个页面)
  • 简单认识Java,数据类型与变量,运算符,程序逻辑控制
  • MySQL中出现‘max_allowed_packet‘ variable.如何解决
  • rlwrap安装
  • 【Docker】一文趣谈Docker
  • Sora提示词与视频创作的融合(一):创意启发:利用提示词激发创作灵感