请问x86汇编中什么指令影响zf标志位?

说一些比较常用的吧,全面一点更好... 说一些比较常用的吧,全面一点更好 展开
 我来答
百度网友dd2a4ae
2012-12-14 · TA获得超过1.6万个赞
知道大有可为答主
回答量:2628
采纳率:11%
帮助的人:1662万
展开全部
简单点说,所有的对操作数进行算术和逻辑运算的指令,都会根据运算结果修改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指令,也不具有运算结果的意义。
匿名用户
2012-12-14
展开全部
挺多的。举个例子吧。常用有ADD,求和,inc,自动加一,dec自动减一,xor异或,not,非,test测试等等,基本上会出现运算结果的都会。mov指令不会影响zf的值。不明白可追问。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
逍遥hell
2012-12-14
知道答主
回答量:25
采纳率:0%
帮助的人:4.9万
展开全部
我理解zf中z是zero的意思,即zero flag。其作用就是判断运算结果与零是否相等,相等及为真(1),反之为假(0)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梁山清
2012-12-14
知道答主
回答量:20
采纳率:0%
帮助的人:11.6万
展开全部
运算结果影响它,若是0,则zf位置1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式