比较和条件跳转

CMP

  • 比较两个操作数,相当于SUB指令,但是相减的结果不保存到第一个操作数,而是根据相减的结果来改变零标志位。当两个操作数相等时,零标志位Z置为1。
  • 两个操作数不相等时,零标志位Z被置为0,而且如果第一个操作数大于第二个操作数,符号位S被置为0;如果第一个操作数小于第二个操作数,符号位S被置为1。

TEST

  • 两个操作数进行与操作,结果不保存,但是会改变标志位的结果。
  • 可以用这个指令来判断eax是否等于0。

JUMPS

  • 所有的跳转指令都会指向程序将会跳转的地址

JMP跳转

  • 无条件跳转,总是跳转到指定的地址

JE JZ 结果不为零跳转

  • 两个跳转指令是等价的,书写不同而已,零标志位Z被置为1时跳转

JNE JNZ 结果为零跳转

  • 与JE JZ相反,零标志位为0时,跳转

JS 结果为负跳转

  • 当比较的结果为负时跳转,即符号位S为1时跳转

JNS 结果不为负跳转

  • 与JS相反,当符号位S为0时,跳转

JP JPE 结果中1的个数为偶数跳转

  • 比较的结果中,1的个数要是偶数,奇偶标志P会被置为1,则跳转

JNP JNPE 结果中1的个数为奇数跳转

  • 与JP JPE相反,当比较的结果中1的个数为奇数,奇偶标志位P被置为0时,跳转。

JO 结果溢出跳转

  • 当发生溢出的时候,溢出标志O被置为1,跳转

JNO 结果没有溢出跳转

  • 与JO相反,当溢出标志O为0时,跳转,即没有发生溢出时。

JB JNAE 小于跳转(无符号数)

  • 第一个操作数小于第二个操作数时跳转,即进位借位标志位C被置为1

JNB JAE 大于跳转(无符号数)

  • 与JB JNAE相反,当借位进位标志位为0时跳转,

JBE JNA 小于等于跳转(无符号数)

  • 小于或者等于的时候跳转,需要判断两个标志位,当进位借位标志C被置为1或者零标志Z被置为1时,跳转。

JNBE JA 大于跳转(无符号数)

  • 与JBE相反,当进位借位标志C和零标志位Z都为0时,才会跳转。

JL JNGE 小于跳转(有符号数)

  • 小于的时候跳转,与JB不同,这个指令根据符号标志位S来决定是否跳转
  • 溢出标志O与符号标志S不同时,跳转

JNL JGE 大于等于跳转(有符号数)

JLE JNG 小于等于跳转(有符号数)

JNLE JG 大于跳转(有符号数)

OllyDbg---比较、条件跳转指令的更多相关文章

  1. 汇编 sub减法指令 比较指令CMP JZ条件跳转指令

    二.SUB指令 减法指令SUB (SUBtract) 格式: SUB A,B //A=A-B; 功能: 两个操作数的相减,即从A中减去B,其结果放在A中. 二.CMP 和JZ 指令 比较指令CMP 格 ...

  2. 汇编:jmp系列跳转指令总结

    助记方法: J:跳转C: 进位位置位N: 否S: 符号位置位o: 溢出位置位Z: 零标志位置位E: 等于P:奇偶位置位A: AboveB: BelowL: Less (Little的比较级)G: Gr ...

  3. x86汇编 条件跳转

    条件跳转表 汇编语言-条件跳转指令 直接转移指令 指令格式 机器码 测试标志 条件说明 符号  JO       OPR 70  OF=1  结果有溢出    JNO      OPR 71  OF= ...

  4. ARM指令集——条件执行、内存操作指令、跳转指令

    ARM 汇编指令条件执行 在ARM模式下,任何一条数据处理指令可以选择是否根据操作的结果来更新CPSR寄存器中的ALU状态标志位.在数据处理指令中使用S后缀来实现该功能. 不要在CMP,CMN,TST ...

  5. ARM学习笔记2——分支跳转指令

    一.Arm指令条件码和条件助记符 二.跳转指令B 1.作用 跳转指令B使程序跳转到指定的地址执行程序(跳转范围是PC-32MB到PC+32MB) 2.指令格式(注:B后面如果有条件,条件就是紧跟在B后 ...

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

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

  7. ARM 汇编指 跳转指令 b , bl

    1. 跳转指令 [ b ] [ bl ]   指令格式:<opcode><cond> <address> 不带返回的跳转指令:b mov r0, #0x12 mov ...

  8. nginx根据条件跳转+跳转规则

    好的参考博文: nginx rewrite规则 自己写的时候参考这两个 Nginx 伪静态Rewrite,重定向Location配置总结(转) nginx rewrite规则语法 一.输入子目录跳转 ...

  9. JSP基础语法--跳转指令 jsp:forward page

    带参数的跳转指令: <jsp:forward page="{路径|<%=表达式%>}"/> <jsp:param name="参数名称&qu ...

随机推荐

  1. 1251-Client does not support authentication protocol requested by server; consider upgrading MySQL client。

    三:出现的一个错误在安装完MySQL的时候,我们现在一般都使用Navicat来连接数据库,可惜出现下面的错误:1251-Client does not support authentication p ...

  2. 面试官:Redis集群有哪些方式,Leader选举又是什么原理呢?

    哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 作为一名Java程序员,Redi ...

  3. 一比一还原axios源码(八)—— 其他功能

    到此,我们完成了axios的绝大部分的功能,接下来我们来补全一下其他的小功能. 一.withCredentials  这个参数可以可以表明是否是一个跨域的请求.那这个的使用场景是啥呢?就是我们在同域的 ...

  4. 新建SpringBoot项目报错

    新建一个Springboot项目时,当勾选了SQL相关的依赖(如引入了jpa 或MyBatis依赖),直接启动项目时报错 原因:没有配置数据库相关的属性,如 url driver 等 解决办法:在ap ...

  5. mavan的安装与配置

    1.下载mavan 下载路径:http://maven.apache.org/download.cgi 2.安装mavan 将下载好的压缩包解压到指定位置 3.配置系统环境变量 添加一个MAVAN_H ...

  6. 做一个能对标阿里云的前端APM工具(上)

    APM 全称是 Application Performance Monitor,即性能监控 这篇文章有三个前提: 从产品形态上看这肯定不是一个能够媲美阿里产品的竞品,所以抱歉我碰瓷了.你可以把这里的阿 ...

  7. 6张图为你分析Kafka Producer 消息缓存模型

    摘要:发送消息的时候, 当Broker挂掉了,消息体还能写入到消息缓存中吗? 本文分享自华为云社区<图解Kafka Producer 消息缓存模型>,作者:石臻臻的杂货铺. 在阅读本文之前 ...

  8. Bert不完全手册3. Bert训练策略优化!RoBERTa & SpanBERT

    之前看过一条评论说Bert提出了很好的双向语言模型的预训练以及下游迁移的框架,但是它提出的各种训练方式槽点较多,或多或少都有优化的空间.这一章就训练方案的改良,我们来聊聊RoBERTa和SpanBER ...

  9. Python之GUI用户界面Tkinter(一)

    Label Label(标签)组件用于在屏幕上显示文本或图像,仅能显示单一字体的文本 •参数 Label(master=None, **options) (class)**options 组件选项,下 ...

  10. OpenCv基础_三

    轮廓检测 图像金字塔 上采样,图像变大一倍,矩阵用0填充 img = cv2.imread('1,jpg') cv_show('img',img) up = cv2.pyrUp(img) cv_sho ...