汇编 逻辑运算对标志位的影响

各种标志位:
有符号溢出标志位OF(Over flow flag) OV(1) NV(0)
方向标志位DF(Direction flag) DN(1) UP(0)
中断标志位IF(Interrupt flag) EI(1) DI(0)
符号标志位SF(Sign flag) NG(1) PL(0)
零标志位ZF(Zero flag) ZR(1) NZ(0)
辅助进位标志位AF(Auxiliary carry flag) AC(1) NA(0)
奇偶标志位PF(Parity flag) PE(1) PO(0)
无符号进位标志位CF(Carry flag) CY(1) NC(0)
后面括号里的0/1指的是标志位相关状态,为0则代表次标志位没有变化,为1则代表这次执行指令产生了变化。
在这里插入图片描述
逻辑与 AND (logic and)
指令对标志位的影响:
指令执行后 CF 和 OF 置零,AF无定义。
PF=1 结果操作数中1的个数为偶数时置1
PF=0 结果操作数中1的个数为奇数时置0

逻辑或 OR (logic or)
指令对标志位的影响:
令执行后 CF 和 OF 置零,AF无定义。
PF=1 结果操作数中1的个数为偶数时置1
PF=0 结果操作数中1的个数为奇数时置0

逻辑非 NOT (logic not)
指令对标志位的影响:对标志位无影响

异或 XOR (exclusice or)
指令对标志位的影响:
令执行后 CF 和 OF 置零,AF无定义。
PF=1 结果操作数中1的个数为偶数时置1
PF=0 结果操作数中1的个数为奇数时置0

测试指令 TEST
指令对标志位的影响:
令执行后 CF 和 OF 置零,AF无定义。
PF=1 结果操作数中1的个数为偶数时置1
PF=0 结果操作数中1的个数为奇数时置0

逻辑左移 SHL (shift logical left)
指令对标志位的影响:CF=移入的数值
OF=1 当cnt=1时,移动后最高位的值发生变化。
OF=0 当cnt=1时,移动时最高位的值未发生变化。

逻辑右移 SHR (shift logical right)
指令对标志位的影响:CF=移入的数值
OF=1 当cnt=1时,移动后最高位的值发生变化。
OF=0 当cnt=1时,移动时最高位的值未发生变化。

MOV LEA XCHG PUSH POP IN OUT
传送类指令不影响标志位
ADD ADC SUB SBB CMP
加减法指令影响全部标志位
INC DEC
增一减一指令不影响CF
NEG
求补指令影响除CF外的5个标志位,对CF位置1
MUL IMUL
乘法指令只影响OF位和CF位,对其他位没定义
DIV IDIV
除法指令对6个标志位均没定义
AND OR XOR TEST
与 或 异或 测试指令正常影响SF ZF PF , 对OF CF清零,对AF没定义
NOT
取反指令对6个标志位均没影响
SHL SHR SAL SAR
移位指令影响除AF外的5个标志位,对AF没定义
ROL ROR RCL RCR
循环移位指令影响CF和OF,对SF ZF PF没影响,对AF没定义

  • 10
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值