decoder 发表于 2014-5-26 10:43:11

对于监测点11.4中标志位的一些疑问

本帖最后由 decoder 于 2014-5-26 10:49 编辑

                  书中的代码:
      MOV AX,0
      PUSH AX
      POPF
      MOV AX,0FFF0H
      ADD AX,10H      ;这里不就是FFF0+10H吗难道我计算有误?
      PUSHF
      POP AX            





0000of df if tf sf zf 0af 0pf 0cf                                                                            000000**010*0101       AND AL,11000101B
      AND AH,00001000B
      对于16位寄存器来说
            FFF0H+10H=10000H毫无疑问产生了进位,CF值为1   PF因ax为0而=0SF只看最高位,ax的最高位为0所以SF=0ZF毫无疑问为1,但10000h这个数值ax存放不下,是不是应该产生溢出呢?我用debug调试去查看结果很意外,开始以为答案有误,可是答案没问题,这个数值对于16位寄存器来说,不管是有符号数还是无符号数add指令肯定会影响这些标志位,但是既然有溢出(也许这不是溢出,对于溢出这个概念,书中的解释就是8位寄存器放不下的数据就会让of值为1,同理,16位寄存器放不下的数据也应该会产生溢出,但是of在这个操作后为什么会是0呢),谁能解释一下这个疑问?




decoder 发表于 2014-5-26 11:18:20

这个监测点中我忽略了fff0要把它看作是有符号数的负数补码,加10h后变为0值不可能有溢出,也就是说-10h+10h=0

15岁的小朋友 发表于 2014-5-26 11:22:46

楼主会了??

decoder 发表于 2014-5-26 11:55:01

15岁的小朋友 发表于 2014-5-26 11:22 static/image/common/back.gif
楼主会了??

刚刚搞懂,呵呵

阔怀 发表于 2015-8-11 11:20:38

{:1_1:}
页: [1]
查看完整版本: 对于监测点11.4中标志位的一些疑问