请问x86汇编中什么指令影响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指令,也不具有运算结果的意义。
挺多的。举个例子吧。常用有ADD,求和,inc,自动加一,dec自动减一,xor异或,not,非,test测试等等,基本上会出现运算结果的都会。mov指令不会影响zf的值。不明白可追问。
文章标签:

本文链接:https://www.u1e.cn/baike/a/cde632a71c443e8c9be53ba3 [复制]

猜你喜欢

歇后语大全

还没有人回应过