• 汇编系列22--标志寄存器与JCC指令


    1、标志寄存器:EFLAGS

    0:CF---进位标志--carry flag

    2:PF---奇偶标志

    4:AF---辅助进位标志

    6:ZF---零标志

    7:SF---符号标志

    8:TF---单步标志--暂时用不到,学习如何实现调试器时学。

    9:IF---中断使能标志--暂时用不到,学中断门的时候再学习。

    10:DF---方向标志

    11:OF---溢出标志

    JCC指令--可修改EIP寄存器的值。

    前面学习,修改EIP的指令有,JMP,CALL,RET。

    JCC指令修改EIP不像JMP是无条件修改EIP的,而是根据标志寄存器里面的值决定的。

    若想很好的理解JCC指令,要理解标志寄存器。

     

     只统计最后一个字节1的个数,为偶数则P位为1,否则为0。

     

     

     

     

     

    汇编 JCC指令表

    JCC指条件跳转指令,CC就是指条件码。

    JCC指令中文含义英文含义检查符号位典型C应用
    JZ/JE 若为0则跳转;若相等则跳转 jump if zero;jump if equal ZF=1 if (i == j);if (i == 0);
    JNZ/JNE 若不为0则跳转;若不相等则跳转 jump if not zero;jump if not equal ZF=0 if (i != j);if (i != 0);
    JS 若为负则跳转 jump if sign SF=1 if (i < 0);
    JNS 若为正则跳转 jump if not sign SF=0 if (i > 0);
    JP/JPE 若1出现次数为偶数则跳转 jump if Parity (Even) PF=1 (null)
    JNP/JPO 若1出现次数为奇数则跳转 jump if not parity (odd) PF=0 (null)
    JO 若溢出则跳转 jump if overflow OF=1 (null)
    JNO 若无溢出则跳转 jump if not overflow OF=0 (null)
    JC/JB/JNAE 若进位则跳转;若低于则跳转;若不高于等于则跳转 jump if carry;jump if below;jump if not above equal CF=1 if (i < j);
    JNC/JNB/JAE 若无进位则跳转;若不低于则跳转;若高于等于则跳转; jump if not carry;jump if not below;jump if above equal CF=0 if (i >= j);
    JBE/JNA 若低于等于则跳转;若不高于则跳转 jump if below equal;jump if not above ZF=1或CF=1 if (i <= j);
    JNBE/JA 若不低于等于则跳转;若高于则跳转 jump if not below equal;jump if above ZF=0或CF=0 if (i > j);
    JL/JNGE 若小于则跳转;若不大于等于则跳转 jump if less;jump if not greater equal SF != OF if (si < sj);
    JNL/JGE 若不小于则跳转;若大于等于则跳转; jump if not less;jump if greater equal SF = OF if (si >= sj);
    JLE/JNG 若小于等于则跳转;若不大于则跳转 jump if less equal;jump if not greater ZF != OF 或 ZF=1 if (si <= sj);
    JNLE/JG 若不小于等于则跳转;若大于则跳转 jump if not less equal;jump if greater SF=0F 且 ZF=0 if(si>sj)

    参考:https://www.cnblogs.com/zhwer/p/12283220.html

  • 相关阅读:
    自定义容器,支持创建普通实例,单例,线程单例
    Unity创建实例:普通实例,单例,线程单例
    自定义容器,利用依赖注入创建对象
    容器Unity实现IOC+DI
    实现高层依赖低层通过抽象类来实现,保证项目的可扩展性
    接口,抽象类,继承,多态,重写
    Linux--如何实现虚拟机与主机之间的文件传输无需第三方,即可轻松设置共享文件夹(适合所有人群)
    Linux--常用的linux基本命令学习大全01(适合所有人群)
    reset.css下载
    vue项目中,'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序
  • 原文地址:https://www.cnblogs.com/RevelationTruth/p/13923980.html
Copyright © 2020-2023  润新知