注册 登录
编程论坛 汇编论坛

王爽 检测题 不理解。。。

ping燕s 发布于 2011-06-21 19:16, 484 次点击
小D不明白 求仔细讲解下。。。谢谢


mov ax,0
push ax
popf
mov ax,0fffh
add ax,0010h
pushf
pop ax
and al,11000101b
and ah,00001000b
3 回复
#2
ansic2011-06-21 22:46
1,先了解一下pushf/popf的功能
2,打开debug,运行一下上述程序,注意观察标志寄存器的变化
#3
cash02112011-06-23 12:20
学生浅显的讲解一下自己懂。。希望LZ懂了再指导指导我。。。
   高手的话。。也望赐教。。。
mov ax,0              首先ax 置 0
push ax               将ax 推入栈中
popf                  这里将栈中 0 取出送入 标志寄存器

mov ax,0fffh            
add ax,0010h          这两步对 ax 处理后。ax = 100fh

pushf                 将标志寄存器的值推入栈。。这里没有溢出。。我的标志寄存器的值是3006h
pop ax                所以 ax = 3006

and al,11000101b      11000101 and 00000100
and ah,00001000b      00001000 and 00110000


最后我的 ax = 4 。。 这里我不太懂为什么标志寄存器的值为3006。。。LZ也debug 一下。。看看会出现什么情况。。希望能互相学习。。交流。。
因为很久没接触汇编了。。。所以只能说些自己理解的了。。。如有错误请提出。。见谅。。
#4
海东乖乖2011-06-24 20:53
好好学习奥
1