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. zabbix--自带模板监控MySQL服务

    zabbix有内置的模板,不过需要修改下配置,配置文件路径在: [root@localhost ~]# cd /etc/zabbix/ [root@localhost zabbix]# ls web ...

  2. 隐式激活Activity

  3. ionic node-sass安装或编译失败:MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”

    错误原因:缺少windows构建插件 解决方法:npm install --global --production windows-build-tools  (如果目录在C盘下,需要管理员权限运行,全 ...

  4. linux sed删除^M换行符以及^[[转义字符

    1. 删除文档中的蓝色转义字符^M 注意:^M 不能从键盘输入^和M,也不能复制.而是需要按Ctrl+v 然后再按Ctrl+M 按Ctrl+v的时候屏幕不会输出,再按下Ctrl+M的时候即会出现^M  ...

  5. day11 python名称空间 作用域

    day11 python   一.三元运算符 def func(a, b):     return a if a > b else b   print(func(44,66))     二:函数 ...

  6. Centos7命令行安装Tomcat以及配置防火墙开放端口

    [转载]Centos 7 yum安装tomcat 命令: 系统环境CentOS Linux release 7.2.1511 (Core) 一.搭建准备:1.先到tomcat官网https://tom ...

  7. 【luoguP4768】【NOI2018】归程

    description 本题的故事发生在魔力之都,在这里我们将为你介绍一些必要的设定. 魔力之都可以抽象成一个 nn 个节点.mm 条边的无向连通图(节点的编号从 11 至 nn).我们依次用 l,a ...

  8. Android中的onWindowFocusChanged()方法详解

    Android中获取手机屏幕的高度和宽度,我们知道在onCreate方法中获取到的值都是为0的,有人说可以在onClick方法中获取值,这个也是个方法 ,但在onWindowFocusChanged方 ...

  9. Windows系统文件夹共享与隐藏共享

    Windows用户之间建立共享文件夹提供共享服务 建立共享文件夹 Window共享:本地网络-->属性-->共享-->高级共享   设置共享名-->另一台主机输入共享主机的IP ...

  10. nginx填坑补充(nginx根据上下文跳转ip或者域名)

    今天有一个需求,要根据上下文调到不同的ip或域名地址,使用上下文做域名跳转的时候,proxy_pass域名后面一定要带‘/’否则会把nginx的上下文自动带入,这样就行. location ^~ /d ...