|
发表于 2012-3-11 23:25:04
|
显示全部楼层
mov ax,0 这步不解释,赋值0到AX
push ax 把ax的值放入栈,现在栈内有一个数据,0
popf 出栈,即把上一步的0出栈,放入标志寄存器中,标志寄存器的各位为0
mov ax,0fff0h 把fff0h赋值到ax中
add ax,0010h (ax)+0010h=fff0h+0010h=0000h
add更改标志寄存器的值
CF判断无符号数运算是否向更高位进位或者借位,借位,所以CF=1
OF判断有符号数运算是否溢出,ax是十六位,范围在-32768~32767,fff0h=-16
所以没有溢出,0F=0
ZF判断结果是否为0,结果为0,所以ZF=1
PF判断结果中1的个数是否为偶数,结果为0,偶数,所以PF=1
SF判断结果是否为负,结果为0,不为负,所以SF=0
所以现在我们根据这个结果,判断标志寄存器的值,不知道的值先设为X
X X X X 0 X X X 0 1 X X X 1 X 1
OF SF ZF PF CF
pushf 将标志寄存器的值放入栈
pop ax 把刚放入栈的标志寄存器的值放入AX
and al,11000101b and逻辑与,全为1则为1,有一个为0则为0, 01xx x1x1,结果为al=0100 0101b
and ah,00001000b 同上,xxxx 0xxx,结果ah=0000 0000b
结果AX=45H
|
评分
-
查看全部评分
|