KK学脚本 发表于 2012-3-11 22:37:05

检测点11.4(还是不懂啊)

mov ax,0
push 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学脚本的微博

夏洛 发表于 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
                         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

月明时分 发表于 2012-3-17 17:55:52

顶一下:dizzy:

夜鸽 发表于 2012-3-31 00:13:47

我是来看OF为什么等于0的,谢谢楼上的楼上的解释{:5_95:}

C开头 发表于 2012-9-3 19:16:10

夏洛 发表于 2012-3-11 23:25 static/image/common/back.gif
mov ax,0      这步不解释,赋值0到AX
               
push ax         把ax的值放入栈,现在栈内 ...

{:5_101:}亲,你太厉害了

永恒的冲空 发表于 2013-7-11 10:57:53

学到了:D:D

忘忧的记忆 发表于 2013-7-20 10:07:40

明白了{:5_109:}

大娱乐家_╮ 发表于 2013-7-24 13:01:35

我是来看OF为什么等于0的,

菜鸟一个a 发表于 2014-2-17 20:41:11

学习学习再学习

luckin 发表于 2014-3-8 10:08:51

夏洛 发表于 2012-3-11 23:25 static/image/common/back.gif
mov ax,0      这步不解释,赋值0到AX
               
push ax         把ax的值放入栈,现在栈内 ...

厉害 赞一个

人生一撇 发表于 2016-7-24 14:53:33

{:5_106:}

装糊涂 发表于 2019-12-10 17:40:18

夏洛 发表于 2012-3-11 23:25
mov ax,0      这步不解释,赋值0到AX
               
push ax         把ax的值放入栈,现在栈内 ...

大佬厉害{:10_256:}
页: [1]
查看完整版本: 检测点11.4(还是不懂啊)