汇编语言指令集学习条件转移指令详解

目录
  • 1.根据单个条件标志的设置情况转移
  • 2. 比较两个无符号数,并根据比较的结果转移
  • 3. 比较两个带符号数,并根据比较的结果转移
  • 4.测试CX或ECX的值为0则转移指令

条件转移指令较多,容易混淆,在此记录一下便于日后使用

1.根据单个条件标志的设置情况转移

指令 英文 含义 格式 测试条件
JZ/JE jump if zero/equal 结果为零/相等则转移 JZ/JE OPR ZF=1
JNZ/JNE jump if not zero/equal 结果不为零/不相等则转移 JNZ/JNE OPR ZF=0
JS jump if sign 结果为负则转移 JS OPR SF=1
JNS jump if not sign 结果为正则转移 JNS OPR SF=0
JO jump if overflow 溢出则转移 JO OPR OF=1
JNO jump if not overflow 不溢出则转移 JNO OPR OF=0
JP/JPE jump if parity/parity even 奇偶位为1则转移 JP/JPE OPR PF=1
JNP/JNPE jump if not parity/parity even 奇偶位为0则转移 JNP/JNPE OPR PF=0
JB/JNAE/JC jump if below/not above、not equal/carry 低于/不高于或不等于/进位为1则转移 JB/JNAE/JC OPR CF=1
JNB/JAE/JNC jump if not below/ above、equal/not carry 不低于/高于或等于/进位为零则转移 JNB/JAE/JNC OPR CF=0
适用于测试某 一次运算的结果并根据其 不同特征产生程序分支 不同的处理的 情况

2. 比较两个无符号数,并根据比较的结果转移

指令 英文 含义 格式 测试条件 等价于
JB/JNAE/JC jump if below/not above、not equal/carry 低于/不高于或不等于/进位为1则转移 JB/JNAE/JC OPR CF=1 <
JNB/JAE/JNC jump if not below/ above、equal/not carry 不低于/高于或等于/进位为零则转移 JNB/JAE/JNC OPR CF=0
JBE/JNA jump if below/equal、not above 低于/等于、不高于则转移 JBE/JNA OPR CF并ZF=1
JNBE/JA jump if not below/not equal、above 不低于/不等于、高于则转移 JNBE/JA OPR CF并ZF=0 >

3. 比较两个带符号数,并根据比较的结果转移

指令 英文 含义 格式 测试条件 等价于
JL/JNGE jump if less、not greater/equal 小于、不大于/不等于则转移 JL/JNGE OPR SF异或CF=1 <
JNL/JGE jump if not less、greater/equal 不小于、大于/等于则转移 JNL/JGE OPR SF异或CF=0
JLE/JNG jump if less/equal、not greater 小于/等于、不大于则转移 JLE/JNG OPR (SF异或CF)并ZF=1
JNLE/JG jump if not less/not equal、 greater 不小于/不等于、大于则转移 JNLE/JG OPR (SF异或CF)并ZF=0 >

4.测试CX或ECX的值为0则转移指令

1. LCXZ (jump if CX register is zero) CX寄存器的内容为零则转移
  格式:JCXZ OPR
  测试条件:(CX)=0

2. LECXZ (jump if ECX register is zero) ECX寄存器的内容为零则转移
  格式:JECXZ OPR  (386及其后继机型可用)
  测试条件:(ECX)=0

以上就是汇编语言指令集学习条件转移指令详解的详细内容,更多关于汇编语言条件转移指令的资料请关注我们其它相关文章!

(0)

相关推荐

  • 汇编语言指令集之串处理指令讲解

    串处理指令 串处理指令分类情况如下: 指令类型 MOVS move string 传传送 CMPS compare string 串比较 SCAS scan string 串扫描 LODS load from string 从串取 STOS store in to string 存入串 INS input from port to string 串输入 OUTS output string to port 串输出 REP repeat 重复 REPE/REPZ repeat while equa

  • 汇编语言指令mov、add、sub、jmp详解

    指令(instruction)是一种语句,它在程序汇编编译时变得可执行.汇编器将指令翻译为机器语言字节,并且在运行时由 CPU 加载和执行. 一条指令有四个组成部分: 标号(可选) 指令助记符(必需) 操作数(通常是必需的) 注释(可选) 不同部分的位置安排如下所示: [label: ] mnemonic [operands] [;comment] 现在分别了解每个部分,先从标号字段开始. mov传送指令mov a,b 将b数据放进a mov:寄存器,数据 mov:寄存器,寄存器 mov:寄存器

  • 汇编语言Debug命令详解教程

    目录 1. Debug-R命令 2. Debug-D命令 3. Debug-E命令 4. Debug-U命令 5. Debug-T命令 6. Debug-A命令 参考书籍<汇编语言>--王爽 Debug的命令比较多,这里我介绍常用的命令,其余的等需要的时候再进行查询. 命令 用途Debug-R查看.改变CPU寄存器的内容Debug-D查看内存中的内容Debug-E改写内存中的内容Debug-U将内存中的机器指令翻译成汇编指令Debug-T执行一条机器指令Debug-A以汇编指令的格式在内存中写

  • 汇编语言MIPS指令分类及寻址模式原理概念

    目录 一.相关概念 二.MIPS操作数之32个寄存器 三.MIPS汇编语言指令类型及寻址方式 1. R型指令 2. I型指令 3. J型指令 四.MIPS类型及寻址方式分析 1. MIPS字段命名 2. 指令类型 3. MIPS寻址方式 一.相关概念 指令集:一个给定的计算机体系结构所包含的指令集合. 存储程序概念:多种类型的指令和数据均以数字形式存储于存储器的概念,存储程序型计算机即缘于此. 二.MIPS操作数之32个寄存器 寄存器名字 寄存器编号 寄存器功能 $zero $0 恒等于零 $a

  • 汇编语言指令集学习条件转移指令详解

    目录 1.根据单个条件标志的设置情况转移 2. 比较两个无符号数,并根据比较的结果转移 3. 比较两个带符号数,并根据比较的结果转移 4.测试CX或ECX的值为0则转移指令 条件转移指令较多,容易混淆,在此记录一下便于日后使用 1.根据单个条件标志的设置情况转移 指令 英文 含义 格式 测试条件 JZ/JE jump if zero/equal 结果为零/相等则转移 JZ/JE OPR ZF=1 JNZ/JNE jump if not zero/equal 结果不为零/不相等则转移 JNZ/JN

  • 汇编语言指令集之条件转移指令实现

    条件转移指令较多,容易混淆,在此记录一下便于日后使用 1. 根据单个条件标志的设置情况转移 指令 英文 含义 格式 测试条件 JZ/JE jump if zero/equal 结果为零/相等则转移 JZ/JE OPR ZF=1 JNZ/JNE jump if not zero/equal 结果不为零/不相等则转移 JNZ/JNE OPR ZF=0 JS jump if sign 结果为负则转移 JS OPR SF=1 JNS jump if not sign 结果为正则转移 JNS OPR SF

  • 汇编语言指令集学习CMPXCHG比较并交换操作指令详解

    指令助记符 CMPXCHG 含义: 比较并交换指令 用法:目的操作数和累加操作数(AH.AL.EAX)进行比较,如果相等(ZF=1),则将源操作数复制到目的操作数中,否则将目的操作数复制到累加器中. 指令格式: CMPXCHG reg reg CMPXCHG mem reg 例子详解: CMPXCHG CX,DX 1.指令执行前:(AX)=00FFH,(CX)=00FFH,(DX)=00EFH; 指令执行后:(AX)=00FFH,(CX)=00EFH,(DX)=00EFH,ZF=1; 2.指令执

  • python学习 流程控制语句详解

    ###################### 分支语句 python3.5 ################ #代码的缩进格式很重要 建议4个空格来控制 #根据逻辑值(True,Flase)判断程序的运行方向 # Ture:表示非空的量(String,tuple元组 .list.set.dictonary),所有非零的数字 # False:0,None .空的量 #逻辑表达式 可以包含 逻辑运算符 and or not if: ##################################

  • 汇编语言实现电子闹钟思路详解

    2.1 设计思路 首先使用8255.8254.8259 三个芯片实现电子时钟的功能,让闹钟可以正常走时:其次,在时钟的基础上添加闹铃功能.整点报时功能.设置当前时间功能:完成设计. 2.2 设计方案 1. 电子时钟部分:此次设计是通过对计数器8254设定计数值对脉冲进行计数,在程序里,8254工作于计数器0,方式3.接入的CLK为1MHz,设计数初值为10000,每100次中断计数一次,产生的记数时间正好是时钟每秒走过的时间.通过对中断控制器8259设置初始化命令字初值来控制中断.程序中通过移位

  • Python基础之条件语句详解

    一.环境介绍 Python版本Python 3.8.8 ( Pycharm版本2021.1.2 二.条件判断介绍 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 语句块是在条件为真(条件语句)时执行或者执行多次(循环语句)的一组语句.在代码前放置空格来缩进语句即可创建语句块. 三.if语句的使用 1.if的第一种使用方法 对于if语句,若条件判定为真,那么后面的语句块就会被执行.若条件判定为假,语句块就会被跳过,不会执行. # 条件判断 # 第一

  • C++学习之线程详解

    目录 开篇 线程的状态 多线程的构建 计算时间 一.程序运行时间 二.chrono 共享资源和互斥锁 condition_variable 线程池 总结 开篇 多线程是开发中必不可少的,往往我们需要多个任务并行,就需要多线程开发:就好比图像检测和图像结果的处理,这就是一个可闭环的任务,用多线程是可以加速这个任务的: 线程的状态 就绪态:线程能够运行,正在等待处理机资源: 运行态:正在运行,可能有多个线程处于运行态: 阻塞态:线程由于等待某些条件而无法运行,例如IO.锁.互斥量等: 终止态:线程从

  • Python学习之自定义异常详解

    目录 自定义抛出异常关键字-raise 演示小案例-1 演示小案例-2 自定义异常类 总结 在上一章我们学习了 异常的三个关键字,分别是try.except 以及 finally.我们知道在 try 代码块中如果遇到错误就会抛出异常,交给 except 提前定义好的错误类型进行匹配并捕获,如果成功捕获到异常就会交给 except 的代码块进行执行,最后的 finally 是无论如何都会执行的代码块. 那么在 try 语法块中是谁抛出的异常?优势如何抛出的呢?首先抛出异常的是 Python 的解释

  • Python学习笔记嵌套循环详解

    目录 1. 嵌套循环 2. break语句 3. continue语句 4. else语句 5. 循环代码优化 1. 嵌套循环 多重循环 代码测试1: # 嵌套循环 def test(): for i in range(5): for j in range(6): print(f"{i} ", end='') print('') # 换行 # Main if __name__ == '__main__': test() 代码测试2: # 九九乘法表 def test2(): for i

  • MySQL学习之完整性约束详解

    数据完整性指的是数据的一致性和正确性.完整性约束是指数据库的内容必须随时遵守的规则.若定义了数据完整性约束,MySQL会负责数据的完整性,每次更新数据时,MySQL都会测试新的数据内容是否符合相关的完整性约束条件,只有符合完整性的约束条件的更新才被接受. 1.主键约束 主键就是表中的一列或多个列的组合,其值能唯一地标识表中的每一行.MySQL为主键列创建唯一性索引,实现数据的唯一性.在查询中使用主键时,该索引可用来对数据进行快速访问.通过定义PRIMARY KEY约束来创建主键,而且PRIMAR

随机推荐