. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->外中断
主题 : :  15.4例程的不解,求那位能帮我解释下!  [已解决] 回复[ 2次 ]   点击[ 466次 ]  
yc2010
[帖 主] [ 发表时间:2010-08-26 09:53 ] 
荣誉值:2
信誉值:0
注册日期:2010-03-03 23:27
15.4例程中的部分代码:
........
push es:[9*4]
pop ds:[0]
push es:[9*4+2]
pop ds:[2]              1:这里是将原来的int 9中断例程的入口地址保存在ds:0,ds:2单元中

mov word ptr es:[9*4],offset int 9
mov es:[9*4+2],cs       2:这里是在中断向量表中设置新的int 9中断例程的入口地址  
........
push ds:[0]
pop es:[9*4]
push ds:[2]
pop es:[9*4+2]          3:这里是将中断向量表中int 9中断例程的入口恢复为原来的地址
........
pushf
pushf
pop bx
and bh,11111100b
push bx
popf 
call dword ptr ds:[0]   4:这里是对int指令进行模拟
                        ----->这一句的作用是:push ds:[2],push ds:[0]

cmp al,1
........
以下是我的理解:1,2执行后,就执行4,4将原来的int 9中断例程的入口地址压进栈,那此时到底是
调用的原来的int 9中断例程,还是新写的int 9中断例程?有点迷惑求人给解。
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved