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 ...
随机推荐
- C/C++语言读取SEGY文件笔记(一)
SEGY IO 推荐采用的IDE为Visual studio(VS),本文档将介绍SEGY文件的读取与写入过程,即SEGY文件的复制. 因此,新建头文件ReadSeismic.h与C++文件ReadS ...
- LGP4216题解
这是一种题解没有的 \(O(m\log n)\) 做法. 首先第一步转化.设这是第 \(x\) 个任务,若 \(opt\) 为 \(1\),危险值大于 \(c\) 的只有可能在第 \(x-c-1\) ...
- 『现学现忘』Docker基础 — 30、Docker中数据卷相关命令
目录 1.Volume命令说明 2.Volume命令的使用 (1)创建数据卷 (2)查看本地数据卷列表 (3)打印myVolume数据卷的详细信息 (4)删除数据卷 (5)删除所有未使用的数据卷 3. ...
- Mysqldump 命令只导出表结构或数据或数据和结构的方法
1.备份数据库 #mysqldump --opt -d 数据库名 -u root -p > xxx.sql #mysqldump DB_NAME >数据库备份名 #mysqldump -A ...
- php的魔术函数和魔术常量
0x00 魔术函数 1. __construct() 实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用. 2. __des ...
- DVWA high 带token暴力破解
一.选择Pitchfork模式.选择要爆破的参数 二.配置Options 找到optiops(设置)把线程设为1 配置Grep=Extract,点添加 点击Refetch response 获取返回的 ...
- WIFI-Pumpkin无线钓鱼渗透
WIFI-Pumpkin无线钓鱼渗透 描述 WiFi-Pumpkin是一款专用于无线环境渗透测试的完整框架,利用该工具可以伪造接入点完成中间人攻击,同时也支持一些其他的无线渗透测试功能.旨在提供更安全 ...
- 四旋翼中的PID调节方法 | betaflight固件如何调节PID
roll横滚,pitch俯仰,yaw航向 一.PID的作用概述 1.P产生响应速度和力度,是I和D的基础 过小响应慢(虽然无震荡) 过大会产生振荡且不断发散 2.D抑制过冲和振荡,抵抗外界的突发干扰, ...
- 统计分析— 1.SPSS数据编辑窗口 输出窗口 语法窗口
第一课-SPSS窗口 一 数据编辑窗口(Data Editor) 二 输出窗口(Output Viewer ) 三 语法窗口(Syntax Editor):针对中高级用户,有些操作可以通过输入代码的方 ...
- 一致性检验评价方法kappa
最近在做眼底图像的无监督分类,使用的数据集辣子kaggle的Diabetic Retinopathy,简称DR,中文称糖尿病型眼底疾病. 最后的评估方法是二次加权kappa.以前没接触过,网上也没有具 ...