1. 跳转指令 【 b 】 【 bl 】

    指令格式:<opcode><cond> <address>

   不带返回的跳转指令:b

mov r0, #0x12
mov r1, #0x34
b fun_add @一条指令 , 有地址
mov r2, #0x56 @通过上面的跳转此处将不会得到执行
mov r3, #0x78 fun_add: @伪操作 标号类似 C语言中的一个函数体 , 此处只是一个局部 的标号
mov r4, #0x1
mov r5, #0x1
add r6, r4, r5
b loop @ b指令本质改变寄存器 PC 值 loop:
b loop @此处是实现 死循环

   带返回值的跳转指令:bl

mov r0, #0x12
mov r1, #0x34 bl fun_add @由CPU 自动保存返回地址 到 lr 寄存器(r14)
mov r2, #0x56 @ 跳转到fun_add 函数 执行完后再跳转此处执行
mov r3, #0x78
b loop fun_add:
mov r4, #0x1
mov r5, #0x1
add r6, r4, r5 @需要手动把 lr 值 赋给 PC
mov pc, lr @此时这个fun_add 函数执行完 , 会跳转到,跳转次函数的下条指令 loop:
b loop

条件码 <cond >的功能使用介绍

例子 : 求出 0 ~ 10 以内的奇数和

mov r0, #
add_fun:
add r2, r2, r0
add r0, r0, #
cmp r0,# @ 到达11 可以结束了
beq loop @ 此处受 cmp 执行的 结果影响; 如果相等则跳转到 loop ; 其中 eq 是条件码
bne add_fun @ 受 cmp 执行结果影响; 不相等 跳转到 add_fun 处 ; 其中 ne 是条件码 loop:
b loop

对于比较指令 cmp 会CPSR 中的 NZC 状态位,下面的跳转指令 , beq 表示cmp 比较指令成了 将要执行,否则执行bne指令

与C 语言对比:

   if( r0 == )   cmp r0, #111
  {
    beq loop beq loop
  }
  else
  {
    bne add_fun bne add_fun
  }

ARM 汇编指 跳转指令 b , bl的更多相关文章

  1. 学 Win32 汇编[28] - 跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

    http://www.cnblogs.com/del/archive/2010/04/16/1713886.html 跳转指令分三类:一.无条件跳转: JMP;二.根据 CX.ECX 寄存器的值跳转: ...

  2. 7.arm汇编 bic和orr指令

    1. bic BIC指令的格式为: BIC{条件}{S}  目的寄存器,操作数1,操作数2 BIC指令用于清除操作数1的某些位,并把结果放置到目的寄存器中. 操作数1应是一个寄存器, 操作数2可以是一 ...

  3. ARM 汇编指令

    ARM汇编程序特点: l         所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理,都是要传送到通 ...

  4. ARM汇编指令特点

    根据朱有鹏老师课程笔记整理而来: (汇编)指令是CPU机器指令的助记符,经过编译后会得到一串1 0组成的机器码,由CPU读取执行. (汇编)伪指令本质上不是指令(只是和指令一起写在代码中),它是编译器 ...

  5. ARM 汇编 简单介绍

    1. 汇编文件说明 : 汇编文件以 [.s]结尾的文件格式 注释:多行注释 /* */   : 单行注释 @ 2.  符号说明: 1) 汇编指令,一条指令对应一个机器码,完成一定的功能 2) 伪指令, ...

  6. ARM 汇编寻址方式

    ARM支持9种寻址方式:立即数寻址,寄存器寻址,寄存器偏移寻址,寄存器间接寻址,基址变址寻址,多寄存器寻址,相对寻址,堆栈寻址,块拷贝寻址. 立即数寻址 将数据直接存放的指令中发给CPU,首先由于AR ...

  7. ARM汇编指令集1

    (汇编)指令是CPU机器指令的助记符,经过编译过会得到一串0011组成的机器码,可以由CPU读取执行. (汇编)伪指令本质不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译 ...

  8. 关于ARM的B,BL跳转指令

    .text:00001260 A3 04 00 EB                             BL      sub_24F4 当前地址+ (偏移 << 2 + 8) =  ...

  9. arm学习之汇编跳转指令总结

    目前所知道的跳转指令有 b,bl,bep,bne.他们共同点是都是以b开头,首先从字面上分析:b:是Branch,表示分支.bl:是Branch Link表示带连接的分支.bep:Branch ,Eq ...

随机推荐

  1. MySQL字符集不一致导致查询SQL性能问题

    今天做了一个MySQL数据库中的SQL优化. 结论是关联字段字符集不同,导致索引不可用. 查询的SQL如下: select `Alias`.`Grade`, `Alias`.`id`, `Alias` ...

  2. web集群和分布式服务以及消息补偿机制几种方案

    一.为什么要集群? 1.JavaEE项目,如果部署在一台Tomcat上,所有的请求,都由这一台服务器处理,存在很大风险: A:并发处理能力有限(一般单台服务器处理的并发量为250左右,超过250,可能 ...

  3. View Triggers Function Procedure

    check view total number select count(VIEW_NAME) from USER_VIEWS; check trigger total number select C ...

  4. 通信矩阵转DBC

    DBC的制作对于一些人来时比较陌生,熟悉的人做他感觉浪费时间(像我这样的),于是自己用PYTHON写了一个脚本,还挺好用的,只需要填写表格就好了,省出来大部分的时间. 分享下思路, 来看下DBC的文本 ...

  5. CSIC_716_20191213【内置函数exec、元类】

    In memory of the more than 300 thousand Chinese murdered exec( 字符类型的代码,全局变量,局部变量 ).其中,全局变量和局部变量可以写成字 ...

  6. 73. PrintStream(打印流)

    PrintStream(打印流)   打印流可以打印任意类型的数据,而且打印前都会把数据转换成字符串再进行打印(就是把数据存入硬盘中) 编码与解码图例:下面我们来看看一个简单的字节输出流 public ...

  7. rest framework的框架实现之 (版本,解析器,序列化,分页)

    一版本 版本实现根据访问的的方式有以下几种 a : https://127.0.0.1:8000/users?version=v1  ---->基于url的get方式 #settings.pyR ...

  8. Jenkins使用admin修改安全矩阵的时候报错“admin没有Overall/Read权限”

    1.注册完Jenkins,然后使用admin用户登录,报错“admin没有Overall/Read权限”: 2.因为我自己的Jenkins是放在tomcat/webapps的目录下的,所以Jenkin ...

  9. Vue 指令大全

    准备开始本章要给大家带来的内容是相关Vue中的组件以及一系列常用属性.本章合适人群囊括了除已有开发经验人员以外的小白新手,从how.why.what三个角度来让大家理解并使用该技术历史介绍angula ...

  10. vue 表单校验报错 "Error: please transfer a valid prop path to form item!"

    vue 表单校验报错 "Error: please transfer a valid prop path to form item!" 原因:prop的内容和rules中定义的名称 ...