. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
标志寄存器
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
关于11.4的题目
[待解决]
回复[
2
次 ] 点击[
470
次 ]
sunhairuiqn
[帖 主]
[ 发表时间:2009-08-18 22:08 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2009-06-14 00:35
谁能告诉我 11.4是怎么算出来的45H啊 看了论坛上的解释 还是没看懂啊
mywiil
[第
1
楼]
[ 回复时间:2009-08-19 09:58 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:61
信誉值:4
注册日期:2008-10-14 16:29
mov ax,0
push ax
popf
执行到这里,标志寄存器中,我们学到的那几个标志位都是0了,其他的位置用*号代替(因为其他的位置有写并不是0)
mov ax,0fff0H
add ax,0010H
执行到这里,标志寄存器中我们前面学到的那些标志位有些发生了相应变化,ZF、PF、CF都为1
popf
push ax
执行到这里,ax中的值就是标志寄存器中的值
and al,11000101B
and ah,00001000B
上面这两条指令很关键,它将ax中我们没有学到的标志位置的数据都清零了,而学到的位置的值保持不变。
根据上面的执行过程,结合我们学习的标志位在标志寄存器中的位置,就能够得出最后的结论了。
xindalu
[第
2
楼]
[ 回复时间:2009-10-17 19:22 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2009-09-25 18:08
mov ax,0 ;ax=0
push ax ;ax的数据0入栈
popf ;标志寄存器置0
mov ax,0fff0h ;ax=fff0
add ax,0010h ;ax=0000 此时标志寄存器CF=1 OF=0 SF=0 ZF=1 PF=1
pushf ;16位寄存器0000000001000101b=0045h入栈
pop ax ;0045h出栈写入ax=0045h
and al,11000101b ;al=01000101b
and ah,00001000b ;ah=00000000b
;(ax)=0045h
需要登录后才能回帖 -->>
请单击此处登录
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved