zoukankan      html  css  js  c++  java
  • 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 大于跳转(有符号数)

  • 相关阅读:
    linux基础——文件的压缩解压缩以及vim编辑
    linux基础——关于chmod用户权限和文件的相关操作
    linux基础的基础命令操作
    操作系统和网络基础之网络协议
    计算机基础
    【python小记】访问mysql数据库
    Qt去掉treeview项的焦点虚线
    嵌入式qt显示中文和隐藏鼠标
    【vim小记】自动保存配置
    重回ubutntu12.04小记(装完ubuntu做的几件事)
  • 原文地址:https://www.cnblogs.com/KX-Lau/p/12928787.html
Copyright © 2011-2022 走看看