OllyDbg---比较、条件跳转指令
比较和条件跳转
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---比较、条件跳转指令的更多相关文章
- 汇编 sub减法指令 比较指令CMP JZ条件跳转指令
二.SUB指令 减法指令SUB (SUBtract) 格式: SUB A,B //A=A-B; 功能: 两个操作数的相减,即从A中减去B,其结果放在A中. 二.CMP 和JZ 指令 比较指令CMP 格 ...
- 汇编:jmp系列跳转指令总结
助记方法: J:跳转C: 进位位置位N: 否S: 符号位置位o: 溢出位置位Z: 零标志位置位E: 等于P:奇偶位置位A: AboveB: BelowL: Less (Little的比较级)G: Gr ...
- x86汇编 条件跳转
条件跳转表 汇编语言-条件跳转指令 直接转移指令 指令格式 机器码 测试标志 条件说明 符号 JO OPR 70 OF=1 结果有溢出 JNO OPR 71 OF= ...
- ARM指令集——条件执行、内存操作指令、跳转指令
ARM 汇编指令条件执行 在ARM模式下,任何一条数据处理指令可以选择是否根据操作的结果来更新CPSR寄存器中的ALU状态标志位.在数据处理指令中使用S后缀来实现该功能. 不要在CMP,CMN,TST ...
- ARM学习笔记2——分支跳转指令
一.Arm指令条件码和条件助记符 二.跳转指令B 1.作用 跳转指令B使程序跳转到指定的地址执行程序(跳转范围是PC-32MB到PC+32MB) 2.指令格式(注:B后面如果有条件,条件就是紧跟在B后 ...
- arm学习之汇编跳转指令总结
目前所知道的跳转指令有 b,bl,bep,bne.他们共同点是都是以b开头,首先从字面上分析:b:是Branch,表示分支.bl:是Branch Link表示带连接的分支.bep:Branch ,Eq ...
- ARM 汇编指 跳转指令 b , bl
1. 跳转指令 [ b ] [ bl ] 指令格式:<opcode><cond> <address> 不带返回的跳转指令:b mov r0, #0x12 mov ...
- nginx根据条件跳转+跳转规则
好的参考博文: nginx rewrite规则 自己写的时候参考这两个 Nginx 伪静态Rewrite,重定向Location配置总结(转) nginx rewrite规则语法 一.输入子目录跳转 ...
- JSP基础语法--跳转指令 jsp:forward page
带参数的跳转指令: <jsp:forward page="{路径|<%=表达式%>}"/> <jsp:param name="参数名称&qu ...
随机推荐
- 浅析XML
概述XML文档结构 每个XML文档都分为两部分:序言(Prolog)和文档元素(或文档节点) 例子:写一段XML然后简单分析一下 <?xml version="1.0" en ...
- C++ STL vector扩容原理分析
扩容特点: 1)新增元素:vector通过一个连续的数组存放元素,如果集合已满,在新增数据的时候,就要分配一块更大的内存,将原来的数据复制过来,释放之前的内存,在插入新增的元素: 2)对vector的 ...
- JVM探究 面试题 JVM的位置 三种JVM:HotSpot 新生区 Young/ New 养老区 Old 永久区 Perm 堆内存调优GC的算法有哪些?标记清除法,标记压缩,复制算法,引用计数法
JVM探究 面试题: 请你弹弹你对JVM的理解?Java8虚拟机和之前的变化更新? 什么是OOM?什么是栈溢出StackOverFlowError?怎么分析 JVM的常用调优参数有哪些? 内存快照如何 ...
- vue路由传参丢失问题
vue路由传递参数如果用params传递参数,那么页面刷新就会丢失数据,可以改用query来传递参数,这样刷新就不会丢失
- 从源码分析RocketMq消息的存储原理
rocketmq在存储消息的时候,最终是通过mmap映射成磁盘文件进行存储的,本文就消息的存储流程作一个整理.源码版本是4.9.2 主要的存储组件有如下4个: CommitLog:存储的业务层,接收& ...
- 网络编程-Python的netaddr库
In [1]: from netaddr import * In [2]: ip = IPAddress('172.16.100.39') ip.format()ip地址的格式化 '172.16. ...
- XML的解析方式有哪几种?有什么区别?
有DOM.SAX等. DOM:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种标准方式. DOM中的核心概念就是节点.DOM在分析XML文档 ...
- java-规约-日期和时间
public class DateTime { public static void main(String[] args) { /**1 * 日期格式化时,传入的pattern表示年份统一用小写的y ...
- Kafka 分区的目的?
分区对于 Kafka 集群的好处是:实现负载均衡.分区对于消费者来说,可以提高并发度,提高效率.
- javax.net.ssl.sslhandshakeException:sun.security.validator.validatorException:PKIX path buildind failed
前段时间开发的一个需求,需要通过图片URL获取图片的base64编码,测试的时候使用的是百度图片的url,测试没有问题,但是发布后测试时报如下错: javax.net.ssl.sslhandshake ...