求ax中的值
求ax中的值mov ax,0
push ax
popf
mov ax,0fff0h
add ax,0010h
pushf
pop ax
and al,11000101b
and ah,00001000b
本帖最后由 佐少love 于 2013-8-22 12:34 编辑
liufei_vip 发表于 2013-8-21 21:44 static/image/common/back.gif
mov ax,0
push ax
popf
你解释的不错,我就在详细的说说吧EFL寄存器:都是标志位EFL标志位: http://p.blog.csdn.net/images/p_blog_csdn_net/masefee/EntryImages/20090420/ASM.jpgmov ax,0
push ax
popf
mov ax,0fff0h
add ax,0010h;这之前只是为了改变 EFL寄存器,通过溢出的方式改变
pushf ;把溢出的是压入栈,在通过pop ax 把EFL寄存器的值放入ax中
pop ax ;下边的 与 运算就不用解释了!
and al,11000101b
and ah,00001000b
mov ax,0fff0h
add ax,0010h
可以看出 ax已经溢出了
ax = 0 测试结果是0045H
应该和标志寄存器有关 565123 发表于 2013-8-21 18:11 static/image/common/back.gif
测试结果是0045H
应该和标志寄存器有关
你说的对,我就是不知道该怎么算,你能写出详细的步骤么 测试结果是0045H
应该和标志寄存器有关 mov ax,0
push ax
popf
mov ax,0fff0h
add ax,0010h //这步之后EFL=00000247
pushf
pop ax //这步之后ax=0247,下面的自己算吧。
and al,11000101b
and ah,00001000b
百度一下寄存器EFL,因为我看不懂,留给你自己看了。。。 565123 发表于 2013-8-21 18:11 static/image/common/back.gif
测试结果是0045H
应该和标志寄存器有关
ax 溢出
mov ax,fff0 ax = fff0
add aax,0010ax = 0
and al,11000101 al = 00000000
amd ah,00001000 ah = 00000000
为什么我感觉是0 呢?? pushf 标志寄存器入栈,你不知道标志寄存器的值是多少啊。标志寄存器都会默默的改变的,而pushf在pop ax就是把标志寄存器的值赋给ax,所以ax要查表才知道 佐少love 发表于 2013-8-22 12:32 static/image/common/back.gif
你解释的不错,我就在详细的说说吧EFL寄存器:都是标志位EFL标志位: mov ax,0
push ax
popf
是滴,求鱼币。。。 {:5_97:}...........................
页:
[1]