cool121 发表于 2012-4-28 21:12:56

模拟中断过程

在模拟中断过程中:
pushf
pushf
pop bx
and bh,11111100b
push bx
popf
call dword ptr ds:



为什么要两次的pushf???一次不可以???{:5_94:}

hxs554f 发表于 2012-4-28 22:13:25

一次当然不行,一次会导致栈顶发生改变,导致后面取出的数据错误。
这段应该是模仿int指令,实现中断int有以下步骤:
(1)取中断类型码n
(2)将标志寄存器入栈,IF=0,TF=0
(3)将cs、ip入栈
(4)(ip)=(n*4)(cs)=(n*4+2)   然后执行中断程序
第一个pushf是实现第二条的将标志寄存器入栈,第二个pushf是实现 IF=0,TF=0。

cool121 发表于 2012-4-28 22:34:42

hxs554f 发表于 2012-4-28 22:13 static/image/common/back.gif
一次当然不行,一次会导致栈顶发生改变,导致后面取出的数据错误。
这段应该是模仿int指令,实现中断int有 ...

是这样。谢谢了。
页: [1]
查看完整版本: 模拟中断过程