zoukankan      html  css  js  c++  java
  • 汇编标志位

    ZF


    所有的对操作数进行算术和逻辑运算的指令,都会根据运算结果修改ZF标志。

    第一点:
    大多数情况下,运算结果对ZF的修改,由结果是否为0决定。
    若运算结果为0,则ZF=1;
    若运算结果非0,则ZF=0.
    举些例子吧:
    加法指令,比如ADD, ADC, INC,等
    减法指令,比如SUB, SBB, CMP, DEC, NEG, 等
    逻辑运算指令,比如AND, TEST, OR, XOR, NOT等
    逻辑移位指令,比如SHL, SHR, SAL, SAR, RCL, RCR等(ROL,ROR不会改变ZF,原因可自己分析)
    调整指令,比如AAA, AAS,等
    串指令中含有算术运算的那些,比如CMPS, SCAS等
    控制转移指令中含有算术运算的,比如LOOP
    第二点:
    但是,也有一些指令,会改变ZF标志,但其结果具有不确定性,没有运算结果是否为0的意义。
    比如乘法指令 MUL和IMUL, 除法指令DIV和IDIV等
    改变标志寄存器内容的SAHF指令,堆栈操作中的POPF指令,也不具有运算结果的意义。
    Minds overflow
  • 相关阅读:
    C++之容器
    C++之复制控制
    TCP的3次握手/4次握手
    linux编程之多线程编程
    linux编程之信号
    linux编程之共享内存
    MySQL数据库优化
    MySQL存储引擎InnoDB与Myisam
    Redis--持久化
    Redis 请求应答模式和往返延时 Pipelining
  • 原文地址:https://www.cnblogs.com/rookieDanny/p/7793814.html
Copyright © 2011-2022 走看看