检测点11.4(还是不懂啊)
mov ax,0push ax
popf
mov ax,0fff0h
add ax,0010h ;求这步的详细 的理解和解释
pushf
pop ax
and al,11000101b
and ah,00001000b
求AX的值
谢谢了{:5_110:}
http://bbs.fishc.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 KK学脚本的微博 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
XXXX 0XXX 01XX X1X1
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
顶一下:dizzy: 我是来看OF为什么等于0的,谢谢楼上的楼上的解释{:5_95:} 夏洛 发表于 2012-3-11 23:25 static/image/common/back.gif
mov ax,0 这步不解释,赋值0到AX
push ax 把ax的值放入栈,现在栈内 ...
{:5_101:}亲,你太厉害了 学到了:D:D 明白了{:5_109:} 我是来看OF为什么等于0的, 学习学习再学习 夏洛 发表于 2012-3-11 23:25 static/image/common/back.gif
mov ax,0 这步不解释,赋值0到AX
push ax 把ax的值放入栈,现在栈内 ...
厉害 赞一个 {:5_106:} 夏洛 发表于 2012-3-11 23:25
mov ax,0 这步不解释,赋值0到AX
push ax 把ax的值放入栈,现在栈内 ...
大佬厉害{:10_256:}
页:
[1]