#检测点11.1
写出下面每条指令执行后,ZF、PF、SF等标志位的值
汇编语句 | ZF | PF | SF |
---|---|---|---|
sub al,al | ZR | PE | PL |
mov al,1 | ZR | PE | PL |
push ax | ZR | PE | PL |
pop bx | ZR | PE | PL |
add al,bl | NZ | PO | PL |
add al,10 | NZ | PE | PL |
mul al | NZ | PE | NG |
很多人都说最后一条的执行结果SF=0,也就是PL,但是我在DEBUG中执行的结果却是SF=NG(也就是1),在SF=0的结果中有的说mul al的结果存在AX中,所以SF标志位是根据AX确定的,有的说因为al=12,mul的结果是非负数,所以SF=PL,看上去都很有道理,但是经过我的观察,SF只和受影响寄存器的最高位有关,最高位是1,SF=NG,最高为是0,SF=PL。而最终我的执行结果就是SF=NG。