精华内容
下载资源
问答
  • 控制转移指令1.1 条件跳转指令1.2 比较条件跳转指令1.3 多条件分支跳转指令1.4 无条件跳转指令 1.控制转移指令 控制转移指令分为如下图所示的5种,其中比较指令在算术指令中描述过。 1.1 条件跳转指令 条件跳转...

    1.控制转移指令

    1. 控制转移指令分为如下图所示的5种,其中比较指令在算术指令中描述过。
      在这里插入图片描述

    1.1 条件跳转指令

    1. 条件跳转指令一般和比较指令结合使用。在条件跳转指令执行前,一般先用比较指令进行栈顶元素的准备,然后进行条件跳转。
    2. 条件跳转指令:弹出栈顶元素,测试它是否满足某一条件,如果满足,则跳转到指定位置。
    3. 如下图表中所示,是条件跳转指令包括的指令。
      在这里插入图片描述
    4. 注意:
      a) byteshortcharboolean都会转换成int类型的指令完成。
      b) 对于longfloatdouble类型的条件分支比较操作,会先执行相应类型的比较运算指令,返回一个整型值到操作数栈中,然后再使用int类型的条件跳转指令完成分支跳转。
      在这里插入图片描述

    例子:

    1. ifeq
      在这里插入图片描述
    2. ifnonnull
      在这里插入图片描述
    3. 比较指令与跳转指令混合使用例子
      在这里插入图片描述
    4. 存在类型提升的情况
      在这里插入图片描述

    1.2 比较条件跳转指令

    1. 比较条件跳转指令是比较指令和跳转指令的结合体,它将比较和跳转两个步骤合二为一。
    2. 将栈顶的两个元素弹出,进行比较,如果比较的结果满足条件,则进行跳转。
      在这里插入图片描述
      例子1
      在这里插入图片描述
      例子2
      在这里插入图片描述

    1.3 多条件分支跳转指令

    1. 多条件分支跳转指令是专为switch-case语句设计的,主要有tableswitchlookupswitch两种。
    2. tableswitchlookupswitch的区别在于,tableswitch要求多个条件的分支值是连续的,查找效率更高(不需要搜索全部的case值,可以通过简单的计算直接定位);lookupswitch要求多个条件的分支的值不是连续的,查找效率更低(每次查找都需要搜索全部的case值)。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      tableswitch例子:
      在这里插入图片描述
      lookupswitch例子:
      在这里插入图片描述
      JDK7支持string类型的switch语句:
      需要注意的是,在将传入的参数与case值进行比较的时候,先比较的是两者的hash值是不是相等的,如果相等后面还会调用字符串的equals方法进行比较,如果不相等,则与lookupswitch中的下一个hash值进行比较。
      在这里插入图片描述

    1.4 无条件跳转指令

    1. 目前主要的无条件跳转指令就是goto
      在这里插入图片描述
      例子:
      在这里插入图片描述

    更多JVM文章请访问我的JVM专栏:
    https://blog.csdn.net/u011069294/category_10113093.html

    展开全文
  • 汇编跳转指令总结

    2020-08-04 22:59:02
    汇编跳转指令总结 ,目前所知道的跳转指令有 b,bl,bep,bne。
  • 当程序的编译地址与运行地址不一致时,使用相对跳转指令和绝对跳转指令就需要注意了,本文档将讲述其中原因。
  • 【ARM】跳转指令

    2020-06-19 11:06:54
    跳转指令 B 及带连接的跳转指令 BL2.1 B/BL指令的语法格式2.2 应用示例03. 带状态切换的跳转指令 BX3.1 指令格式3.2 指令应用示例04. 带连接和状态切换的连接跳转指令 BLX4.1 指令格式4.2 应用示例05. 附录 01. ...

    00. 目录

    01. 跳转指令概述

    跳转(B)和跳转连接(BL)指令是改变指令执行顺序的标准方式。ARM 一般按照字地址顺序执行指令,需要时使用条件执行跳过某段指令。只要程序必须偏离顺序执行,就要使用控制流指令来修改程序计数器。尽管在特定情况下还有其他几种方式实现这个目的,但转移和转移连接指令是标准的方式。跳转指令改变程序的执行流程或者调用子程序。这种指令使得一个程序可以使用子程序、if-then-else 结构及循环。执行流程的改变迫使程序计数器(PC)指向一个新的地址,ARMv5 架构指令集包含的跳转指令如表 3-12 所示
    在这里插入图片描述

    另一种实现指令跳转的方式是通过直接向 PC 寄存器中写入目标地址值,实现在 4GB地址空间中任意跳转,这种跳转指令又称为长跳转。如果在长跳转指令之前使用“MOVLR”或“MOV PC”等指令,可以保存将来返回的地址值,也就实现了在 4GB 的地址空间中的子程序调用。

    02. 跳转指令 B 及带连接的跳转指令 BL

    跳转指令 B 使程序跳转到指定的地址执行程序。带连接的跳转指令 BL 将下一条指令的地址复制到 R14(即返回地址连接寄存器 LR)寄存器中,然后跳转到指定地址运行程序。需要注意的是,这两条指令和目标地址处的指令都要属于 ARM 指令集。两条指令都可以根据 CPSR 中的条件标志位的值决定指令是否执行。

    2.1 B/BL指令的语法格式

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

    BL 指令用于实现子程序调用。子程序的返回可以通过将 LR 寄存器的值复制到 PC 寄存器来实现。下面 3 种指令可以实现子程序返回。
    ① BX R14(如果体系结构支持 BX 指令)。
    ② MOV PC,R14。
    ③ 当子程序在入口处使用了压栈指令:

    STMFD R13!,{<registers>,R14}
    

    可以使用指令:

    LDMFD R13!,{<registers>,PC}
    

    将子程序返回地址放入 PC 中。
    ARM 汇编器通过以下步骤计算指令编码中的 signed_immed_24。
    ① 将 PC 寄存器的值作为本跳转指令的基地址值。
    ② 从跳转的目标地址中减去上面所说的跳转的基地址,生成字节偏移量。由于 ARM指令是字对齐的,该字节偏移量为 4 的倍数。
    ③ 当上面生成的字节偏移量超过−33 554 432~+33 554 430 时,不同的汇编器使用不同的代码产生策略。否则,将指令编码字中的 signed_immed_24 设置成上述字节偏移量的bits[25:2]。

    2.2 应用示例

    ① 程序跳转到 LABLE 标号处。

    B LABLE ;
    ADD R1,R2,#4
    ADD R3,R2,#8
    SUB R3,R3,R1
    LABLE:
    SUB R1,R2,#8
    

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

    B 0x1234
    

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

    BL func
    

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

    BCC LABLE
    

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

    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
    

    ⑦ 条件子程序调用示例。

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

    03. 带状态切换的跳转指令 BX

    带状态切换的跳转指令(BX)使程序跳转到指令中指定的参数 Rm 指定的地址执行程序,Rm 的第 0 位复制到 CPSR 中 T 位,bit[31∶1]移入 PC。若 Rm 的 bit[0]为 1,则跳转时自动将CPSR中的标志位T置位,即把目标地址的代码解释为Thumb代码;若Rm的位bit[0]为 0,则跳转时自动将 CPSR 中的标志位 T 复位,即把目标地址代码解释为 ARM 代码。

    3.1 指令格式

    BX{<cond>} <Rm>
    

    ① 当 Rm[1∶0]=0b10 时,指令的执行结果不可预知。因为在 ARM 状态下,指令是 4字节对齐的。
    ② PC 可以作为 Rm 寄存器使用,但这种用法不推荐使用。当 PC 作为使用时,指令“BX PC”将程序跳转到当前指令下面第二条指令处执行。虽然这样跳转可以实现,但最好使用下面的指令完成这种跳转。

    MOV PC, PC
    # 或
    ADD PC, PC, #0
    

    3.2 指令应用示例

    ① 转移到 R0 中的地址,如果 R0[0]=1,则进入 Thumb 状态。

    BX R0;
    

    ② 跳转到 R0 指定的地址,并根据 R0 的最低位来切换处理器状态。

    ADRL R0,ThumbFun+1 ;
    BX R0;
    

    04. 带连接和状态切换的连接跳转指令 BLX

    带连接和状态切换的跳转指令(Branch with Link eXchange,BLX)使用标号,用于使程序跳转到 Thumb 状态或从 Thumb 状态返回。该指令为无条件执行指令,并用分支寄存器的最低位来更新 CPSR 中的 T 位,将返回地址写入到连接寄存器 LR 中。

    4.1 指令格式

    BLX <target_add>
    

    其中,<target_add>为指令的跳转目标地址。该地址根据以下规则计算。

    ① 将指令中指定的 24 位偏移量进行符号扩展,形成 32 位立即数。
    ② 将结果左移两位。
    ③ 位 H(bit[24])加到结果地址的第一位(bit[1])。
    ④ 将结果累加进程序计数器(PC)中。
    计算偏移量的工作一般由 ARM 汇编器来完成。这种形式的跳转指令只能实现−32~32MB 空间的跳转。左移两位形成字偏移量,然后将其累加进程序计数器(PC)中。这时,程序计数器的内容为 BX 指令地址加 8 字节。位 H(bit[24])也加到结果地址的第一(bit[1]),使目标地址成为半字地址,以执行接下来的 Thumb 指令。计算偏移量的工作一般由 ARM 汇编器来完成。这种形式的跳转指令只能实现−32~32MB 空间的跳转。

    4.2 应用示例

    ① 从 Thumb 状态返回到 ARM 状态,使用 BX 指令。

    BX R14
    

    ② 可以在子程序的入口和出口增加栈操作指令。

    PUSH {<registers>,R14}
    POP {<registers>,PC}
    

    05. 附录

    11.1 ARM Architecture Reference Manual

    展开全文
  • 8086汇编7:跳转指令

    2017-02-16 23:45:23
    jmp short 标号 执行过程:跳转地址放入IP   jmp far ptr 标号:段间转义,又称为远转移。 原理:同时修改CS与IP jmp dword ptr 内存单元地址(段间转移) jcxz为由条件转移指令,...
    jmp short 标号:对IP的修改为 -128  至 127  负数为往上跳,正数为往下跳
    


    jmp short 标号 执行过程:跳转地址放入IP
     


    jmp far ptr 标号:段间转义,又称为远转移。
    原理:同时修改CS与IP




    jmp dword ptr 内存单元地址(段间转移)






    jcxz为由条件转移指令,所有IP地址为短转移.对IP的修改范围为-128到127
    格式:如果CX为0则跳转(IP+8位位移)



















    展开全文
  • 跳转指令及其跳转条件

    千次阅读 2019-09-23 08:55:52
    ja 跳转指令,条件:CF=0 和 ZF=0 jab 跳转指令,条件:CF=0 jb 跳转指令,条件:CF=1 jbe 跳转指令,条件:CF=1 或者 ZF=1 jc 跳转指令,条件:CF=1 jcxz 跳转指令,条件:CX=0 je 跳转指令,条件:ZF=1 ...

    ja 跳转指令,条件:CF=0 和 ZF=0

    jab 跳转指令,条件:CF=0

    jb 跳转指令,条件:CF=1

    jbe 跳转指令,条件:CF=1 或者 ZF=1

    jc 跳转指令,条件:CF=1

    jcxz 跳转指令,条件:CX=0

    je 跳转指令,条件:ZF=1

    jecxz 跳转指令,条件:ECX=0

    jg 跳转指令,条件:ZF=0 和 SF=OF

    jge 跳转指令,条件:SF=OF

    jl 跳转指令,条件:SF!=OF

    jle 跳转指令,条件:ZF=1 和 SF!=OF

    jmp 跳转指令,条件:无条件跳转

    jna 跳转指令,条件:CF=1 或者 ZF=1

    jnae 跳转指令,条件:CF=1

    jnb 跳转指令,条件:CF=0

    jnbe 跳转指令,条件:CF=0 和 ZF=0

    jnc 跳转指令,条件:CF=0

    jne 跳转指令,条件:ZF=0

    jng 跳转指令,条件:ZF=1 或者 SF!=OF

    jnge 跳转指令,条件:SF!=OF

    jnl 跳转指令,条件:SF=OF

    jnle 跳转指令,条件:ZF=0 和 SF=OF

    jno 跳转指令,条件:OF=0

    jnp 跳转指令,条件:PF=0

    jns 跳转指令,条件:SF=0

    jnz 跳转指令,条件:ZF=0

    jo 跳转指令,条件:OF=1

    jp 跳转指令,条件:PF=1

    jpe 跳转指令,条件:PF=1

    jpo 跳转指令,条件:PF=0

    js 跳转指令,条件:SF=1

    jz 跳转指令,条件:ZF=1

    转载于:https://www.cnblogs.com/sch01ar/p/9614509.html

    展开全文
  • 8086汇编指令速查手册

    2020-08-19 02:04:50
    8086汇编指令速查手册:常用指令、算术运算指令 、逻辑运算指令、串指令 、程序跳转指令。如:计算机寄存器分类简介: 32位CPU所含有的寄存器有: 4个数据寄存器(EAX、EBX、ECX和EDX);2个变址和指针寄存器(ESI和EDI...
  • 分析8086汇编指令jmp的跳转程序

    千次阅读 2018-05-05 09:41:12
    在这里就简单分析下,jmp指令跳转情况 指令真正开始执行是在start处,然后mov di,offset s 代表的就是把标号s处的偏移地址给了di,然后mov si,offset s2 得到的就是标号s2处的偏移地址,对于mov ax,cs:[si]...
  • ARM 指令集 跳转指令

    2011-01-21 04:52:39
    跳转指令 跳转指令用于实现程序流程的跳转,在ARM 程序中有如下两种方法可以实现程 序流程的跳转
  • 跳转指令

    千次阅读 2017-07-14 16:24:56
    跳转指令分三类: 一、无条件跳转: JMP; 二、根据 CX、ECX 寄存器的值跳转: JCXZ(CX 为 0 则跳转)、JECXZ(ECX 为 0 则跳转); 三、根据 EFLAGS 寄存器的标志位跳转, 这个太多了. L小于Lower G大于 greater E equal Z...
  • 单片机跳转指令学习

    2013-06-02 12:42:49
    基于pic16f87x单片机的跳转指令学习
  • JSP 跳转指令

    2018-10-21 13:27:00
    跳转指令依然属于标签指令形式,所以在跳转指令操作完成后依然要进行标签完结 对于跳转指令有以下两种定义形式:定义一:不向跳转页面传递参数 <jsp:forward page="路径"/> 定义二:向跳转页面传递参数 &...
  • 1.18.ARM汇编指令集6之跳转指令

    千次阅读 2017-08-05 14:14:03
    ARM汇编指令之跳转指令:B & BL ...跳转指令跳转指令B,带链接的跳转指令BL,带状态切换的跳转指令BX。 * B 跳转指令,跳转到指定的地址执行程序。 指令格式: B{cond} label eg: b waita ; 跳转到wait
  • 易语言跳转指令

    2013-06-24 14:52:27
    易语言GOTO ,跳转指令。模块直接套用
  • B(跳转指令)及BL(带返回的跳转指令) B指令和BL指令均可以跳转到指令中的目标地址,这两个指令和目标地址处的指令都时ARM指令集。 相同之处 二者也可以根据CPSR中条件标志位的值和指令中的执行条件来决定是否执行...
  • arm 跳转指令跳转范围

    千次阅读 2019-03-23 15:07:56
    B 和 BL 指令都是 相对跳转(短跳转指令,通过偏移量跳转, 最大跳转距离是 ±32M 使用 mov pc, <>可以实现 对跳转(长跳转)(不会保存当前 PC 值) 关于B指令和BL指令最大跳转距离是 ±32M:  ARM汇编...
  • 汇编跳转指令

    万次阅读 2018-04-07 21:28:15
    汇编指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL、JNL、JNG、JG、JCXZ、JECXZ、JMP、JMPE 名称 功能 操作数操作码模数寄存器1寄存器2或内存位移量立即数符号方向芯片型号16位32位JO溢出跳转...
  • 8086汇编指令全集

    万次阅读 多人点赞 2016-04-07 15:08:39
    8086汇编指令全集 学习汇编语言,最关键的就在于汇编指令集的掌握以及计算机工作方式的理解,以下是80X86汇编过程中经常用到的一些汇编指令。 从功能分类上来说,一共可分为 一、 数据传送指令:MOV、XCHG、LEA、...
  • 汇编语言跳转指令

    千次阅读 2019-04-07 13:52:22
    跳转指令分三类: 一、无条件跳转: JMP; 二、根据 CX、ECX 寄存器的值跳转: JCXZ(CX 为 0 则跳转)、JECXZ(ECX 为 0 则跳转); 三、根据 EFLAGS 寄存器的标志位跳转, 这个太多了. 根据标志位跳转的指令: JE ;等于则...
  • 条件跳转指令

    千次阅读 2015-07-16 22:43:31
    条件跳转指令 指令 条件 指令 条件 ja CF=0 AND ZF=0 jnc CF=0 jab CF=0 jne ZF=0 jb CF=1 jng ZF=1 OR SF!=OF jbe CF=1 OR ZF=1 jnge SF=OS jc CF=1 jnl SF=OF jcxz CX=0 jn
  • 总结了各类条件跳转指令所需要的各个不同的标志寄存器
  • ARM指令集——跳转指令

    千次阅读 2014-01-07 00:16:20
    ARM指令集可以分为6类,即跳转指令、数据处理指令、程序状态寄存器(PSR)传输指令、Load/Store指令、协处理指令和异常中断产生指令。 跳转指令: 在ARM中有两种方式可以实现程序的跳转:跳转指令和直接向PC寄存器中...
  • 比较跳转指令

    2013-10-07 02:06:41
    转自 百度空间 ilovetaibai的空间 ... 几个比较跳转指令: je,jne, jb,jnb, ja,jna, jz jnz 好接下来我给大家看下相关指令依据的标志位。     
  • 比较条件跳转指令.pdf

    2021-09-14 14:51:44
    比较条件跳转指令.pdf
  • 昨天学习了ARM汇编基本指令中有一个跳转指令B,老师讲跳转范围为正负32M,今天查了资料说说我自己的理解 首先看看跳转指令B的指令编码情况: B指令的编码是这样的 31..28:条件码 27..25:101 24:是否链接标志 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 158,650
精华内容 63,460
关键字:

8086跳转指令