基于左右操作数或寄存器值的跳转
助记符 英文翻译 说明
JE Jump if left Equals right 相等跳转 (左操作数=右操作数)
JNE Jump if left Not Equals right 不相等跳转 (左操作数≠右操作数)
JCXZ Jump if CX equals Zero CX=0 跳转
JECXZ Jump if ECX equals Zero ECX=0 跳转
JRCXZ Jump if RCX equals Zero RCX=0 跳转(64 位模式)

下述示例使用了 JE、JNE、JCXZ 和 JECXZ 指令。仔细阅读注释,以保证理解为什么条件跳转得以实现(或不实现)。

以下例子用0A523h减去0A523h,如果等于0,则ZF=1,jne和je则根据ZF标志位判断。

mov edx, 0A523h
cmp edx, 0A523h
jne L5                       ;不发生跳转
je L1                         ;跳转

以下例子没有使用cmp指令,但是实际上只要是能修改标志位值的指令,都可以做为jne、je的依据。 sub和cmp指令的区别是,sub会修改寄存器和标志位的值,而cmp只是修改标志位的值。

mov bx,1234h
sub bx,1234h
jne L5                       ;不发生跳转
je L1                         ;跳转

以下注意,当CX的值为0FFFFh时,再加1,只会回滚到0而不会等于10000h,不会进位到上一级寄存器ECX。就像时钟那样周而复始。

mov cx, 0FFFFh
inc cx
jcxz L2          ;跳转

x86汇编_JE、JNE、JCXZ 和 JECXZ 指令_笔记_34相关推荐

  1. x86汇编_SHLD/SHRD双精度左右移指令_笔记49

    SHLD(双精度左移)指令将目的操作数向左移动指定位数.移动形成的空位由源操作数的高位填充.SHRD(双精度右移)指令将目的操作数向右移动指定位数.移动形成的空位由源操作数的低位填充.源操作数不变,但 ...

  2. x86汇编_CMP指令_笔记_28

    高级语言常用的比较语句: if A > B ... while X > 0 and X < 200 ... if check_for_error(N) = true x86汇编用cm ...

  3. X86汇编---寄存器+指令

    文章目录 X86汇编常见的寄存器 x86汇编指令集大全 X86汇编常见的寄存器 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP ...

  4. 汇编指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL、JNL、JNG、JG、JCXZ、JECXZ、JMP、JMPE

    汇编指令: JO.JNO.JB.JNB.JE.JNE.JBE.JA.JS.JNS.JP.JNP.JL.JNL.JNG.JG.JCXZ.JECXZ.JMP.JMPE  名称   功能  操作数 操作码 ...

  5. 汇编 跳转指令: JMP、JCXZ、JECXZ、JA、JE、JNA、JNE、JZ、JB、JS、JC、JNC、JG、JNBE、JO、JP、JL、JPO、JGE、JLE 汇编语言

    以下为JCXZ和JECXZ .JMP:

  6. 编译原理—x86汇编指令

    eax, ebx, ecx, edx, esi, edi, ebp, esp寄存器 eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄 ...

  7. 【Android 逆向】x86 汇编 ( 参考资料 | Intel 官方的文档 | x86 汇编中文文档 | 汇编指令查询器 )

    文章目录 一.x86 汇编参考文档 1.Intel 官方的文档 2.常用 x86 汇编文档 3.x86 汇编指令查询器 总结 一.x86 汇编参考文档 下面的所有资料 , 都可以在博客资源 https ...

  8. x86汇编指令集大全

    一.数据传输指令 1. 通用数据传送指令 MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX ...

  9. 汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)

    From:https://www.cnblogs.com/zimmerk/articles/2520011.html From:https://blog.csdn.net/bjbz_cxy/artic ...

最新文章

  1. LeetCode 报错解决 heap-buffer-overflow Heap-use-after-free Stack-buffer-overflow Global-buffer-overflow
  2. excel2010设置列宽为像素_怎么改变Excel中列宽的像素
  3. mysql改存储引擎教程_MySQL中修改数据表存储引擎的三种方法
  4. 打破重重阻碍,Flutter 和 Web 生态如何对接?
  5. Oracle 表数据去重
  6. 第 3 章 第 2 题 求级数问题 递归法实现
  7. 技能的切实掌握 必须动手
  8. 236.Lowest Common Ancestor of a BinaryTree
  9. linux命令学习--sort排序命令
  10. 软件测试入门基础自卸
  11. Tomcat安装配置
  12. 浏览器iframe跨域
  13. 如何打开计算机的Oracle服务,win10系统手动启动oracle服务的操作方法
  14. 软工作业04四则运算网页版
  15. python 实现重启路由器
  16. 《node-thunder》:Node使用迅雷下载
  17. 零基础开发--歌曲管理系统
  18. 提升页面转化率100招
  19. vc工程下的文件后缀解析
  20. SEC6 - MySQL 查询语句--------------进阶2:条件查询

热门文章

  1. Origin Pro 8.5中对多个多图层图片进行合并
  2. 上位机与台达DVP-SS2 PLC串口通讯
  3. 水电表、工控、医用电子设备等超低功耗段码LCD液晶显示驱动IC-VKL144A/B,TSSOP48/QFN48,工作电流<10微安,可完全兼容替代PCF8551、MCP144、BU9792、9B92等
  4. 谷歌相机第一个版本_您的第一个Google地图
  5. 【愚公系列】2022年08月 微信小程序-view生成分享图片
  6. 关于用Java程序实现8421码权限管理 -第三部分
  7. DSSS信号的分类(周期长码短码与非周期长码)
  8. STL之Map使用总结
  9. swift 音乐播放单例
  10. replace() 和 replaceAll()区别