TF,IF置0的问题

yxlovemoney 2009-05-09 11:57:43
看书上说的把TF,IF置0应该这样
pushf
pop ax
and ah,11111100b ;IF,TF标志寄存器第9位和第8位
push ax
popf

pushf说是标志寄存器入栈,那它是怎么个顺序入栈呢?

书上是这样写的。
那为什么 and ah,11111100b 就可以把TF,IF置0呢?
...全文
433 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nanlingcg 2009-05-09
  • 打赏
  • 举报
回复
明白就好了。
之前还以为8086只把使用的那几个标志位入栈。。。。那也没办法压啊??
yxlovemoney 2009-05-09
  • 打赏
  • 举报
回复
明白了,它是一次把整个标志寄存器的内容放到栈里去,之前还以为8086只把使用的那几个标志位入栈。
nanlingcg 2009-05-09
  • 打赏
  • 举报
回复
书上不是说了:8086标志寄存器是16位
pushf ;标志寄存器里的数据压栈
pop ax ;标志寄存器里的数据出栈传进AX
and ah,11111100b ;高8位的最低2位置0(AND应该会用啊),就是整个AX的9位和8位
push ax (不是第9位和第8位)被置成0,AX压栈后再弹出到标志寄存器里,
popf 不就是把标志寄存器里里的9位和8位改成0了吗,9位是IF位,8位是TF位。


and "与"指令。简单地说就是两个参与"与"的数据只要在对应的位(2进制位)上有一个为0,其"与“后的那个结果所对应的位就为0。
l329960106 2009-05-09
  • 打赏
  • 举报
回复
pushf
先是把16位标志位进栈
pop ax 将16标志位放入ax中
and ah,11111100 将ax中的第89位清0
pop ax
popf 将标志位第89位置0 就是将IF,TF置0
goodider 2009-05-09
  • 打赏
  • 举报
回复
HOHO当然一次性把标志入栈了。

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧