关于汇编程序对标志位的影响

关于汇编程序对标志位的影响,第1张

第一题:
第一次: CF=1 AF=0 SF=0 PF=0 ZF=0 OF=O
第二次: CF=0 AF=1 SF=1 PF=0 ZF=0 OF=1
第二题:
CF位会置1,会扔掉(由于第3条语句是ADD),如果第三条改为:ADC AH,AL
则AH再加1再存入AH

不同的串 *** 作指令,对标志位的影响不同。
传送类的串指令,不影响标志位。
此类指令有:MOVS,LODS, STOS, INS, OUTS。
比较类的串指令,会按比较结果设置标志位。与减法运算指令一样,会影响ZF, CF, ZF, OF, SF, AF, PF等标志位。
此类指令有:CMPS,SCAS。

朋友,我来告诉你答案!简单点说,所有的对 *** 作数进行算术和逻辑运算的指令,都会根据运算结果修改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指令,也不具有运算结果的意义。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/10252087.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存