. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->外中断
主题 : :  检测点15.1的一个疑问  [待解决] 回复[ 13次 ]   点击[ 784次 ]  
lj9766
[帖 主] [ 发表时间:2009-08-10 23:01 ] 
荣誉值:0
信誉值:0
注册日期:2009-07-30 00:44
对于15.1的答案精简为
pushf
call dword ptr ds:[0]
我觉得似乎不用pushf了吧,因为这是中断例程,占用的是中断类型码9的中断向量,
那在中断发生时,中断过程中,标志寄存器入栈是cpu硬件完成的啊,而且IF和TF也都由硬件置0,干嘛还需要再次pushf呢?
不明白!
juende66
[第9楼] [ 回复时间:2011-12-06 14:00 ] 
荣誉值:0
信誉值:0
注册日期:2011-11-11 23:27
我同意 lengren 的说法 

简单的说 就是 这样:
          第一      1.  键盘引发9h中断 pushf ,TF=0,IF=0,cs:ip 入栈  
             第二   2.  pushf             
           第三   3.  call dword ptr (cs:ip)  ;入站 第四处的CS:ip,并执行 call所指向的程序
             第四   4. ......一些指令 
             第五   5.  第三处call指的是BIOS的9h号中断例程,里面含有iret,会出栈第三处和第二处
             第六   6. ......一些指令
          第七      7.  iret     这条出栈第一处  入栈的 IP,CS ,Flag 

               这个时候 程序CS:ip 指向的是 键盘引发9h号中断前的 下一条指令
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved