流风逸雪 发表于 2020-4-16 14:05:05

检测点11.1

assume cs:code

code segment

start:       
        sub al,al;ZF=1   PF=1SF=0
        mov al,1;ZF=1   PF=1SF=0
        push ax;ZF=1   PF=1SF=0
        pop bx;ZF=1   PF=1SF=0
        add al,bl;ZF=0   PF=0SF=0
        add al,10;ZF=0   PF=1SF=0
        mul al;ZF=0   PF=1SF=0
       
code ends
end start
我的debug里显示FLAG的是      NV UP EI PL NZ NA PO NC而不是具体的1或0
第一行Sub Al,Al执行完后变成了 NV UP EI PL ZR NA PE NC
从书上看,这些分别代表标志位   OFDF IF ? ZF AF PFCF
第一行命令执行完了,结果应为0,所以ZR的含义应为ZF=1;结果里1的个数为0(偶数),所以PE的含义应为PF=1;

第二、三、四行执行完了所有标志位不变
第五行执行完了标志位变成          NV UP EI PL NZ MA PO NC 结果里1的个数为1(奇数),所以PO的含义应为PF=0
由此可猜测NZ的含义为ZF=0
不过我始终搞不懂?位代表SF还是TF,看在这么多条指令下去?位和SF一样没变就当做SF吧
页: [1]
查看完整版本: 检测点11.1