别走别忘 发表于 2014-10-16 11:55:34

检测点11.1里问题

本帖最后由 别走别忘 于 2014-10-16 11:58 编辑

王爽汇编 11章检测点 关于 标志寄存器的
检测点11.1
下面这个是标准答案:
写出下面每条指令执行后,ZF、PF、SF、等标志位的值。
sub al,al   al=0h      ZF=1      PF=1      SF=0
mov al,1      al=1h      ZF=1      PF=1      SF=0
push ax       ax=1h      ZF=1      PF=1      SF=0
pop bx      bx=1h      ZF=1      PF=1      SF=0
add al,bl   al=2h      ZF=0      PF=0      SF=0
add al,10   al=12h       ZF=0      PF=1      SF=0
mul al      ax=144h      ZF=0      PF=1      SF=0
检测点涉及的相关内容:
ZF是flag的第6位,零标志位,记录指令执行后结果是否为0,结果为0时,ZF=1
PF是flag的第2位,奇偶标志位,记录指令执行后结果二进制中1的个数是否为偶数,结果为偶数时,PF=1
SF是flag的第7位,符号标志位,记录有符号运算结果是否为负数,结果为负数时,SF=1
add、sub、mul、div 、inc、or、and等运算指令影响标志寄存器
mov、push、pop等传送指令对标志寄存器没影响。
======================================================
想不通啊 明明结果al = 1h时 ZF 应该是0啊 PF 也应该是0 啊 为什么恰恰相反?   还有 POP BX 这个BX怎么和AX相等了,是因为PUSH 和POP 关系?

wxlOS 发表于 2014-11-2 23:55:10

mov pop push是移动命令,不影响标志位,只有运算命令.影响标志位
页: [1]
查看完整版本: 检测点11.1里问题