. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->外中断
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  debug一下,检测点15.1的话大有可疑  [待解决] 回复[ 3次 ]   点击[ 516次 ]  
aaaabbbb12345
[帖 主]   [ 发表时间:2009-10-02 15:34 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:9
注册日期:2009-09-16 17:09
在书中P271页检测点15.1中有这么一句话:
“其实在我们的int9中断例程中,模拟int指令调用原int9中断例程的程序是可以精简的,因为在进入中断例程后,IF和TF都已经置0,没有必要再进行设置了。”  

由于不能理解,我找到int9的地址后DEBUG一看
从结果中可以看到,用CALL 的方式调用 INT9指向的程序,IF的值根本就没有变化.
所以还是不能明白检测点15.1为什么能精简,更不能明白 "IF和TF已经置0" 是怎么回事

AX=0000  BX=0000  CX=0011  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=0B52  ES=0B52  SS=0B62  CS=0B62  IP=0003   NV UP EI PL NZ NA PO NC
0B62:0003 8ED8          MOV     DS,AX            (注意这里)
-t

AX=0000  BX=0000  CX=0011  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=0000  ES=0B52  SS=0B62  CS=0B62  IP=0005   NV UP EI PL NZ NA PO NC
0B62:0005 FF1E2400      CALL    FAR [0024]       (注意这里)                  DS:0024=040A
-t

AX=0000  BX=0000  CX=0011  DX=0000  SP=FFFC  BP=0000  SI=0000  DI=0000
DS=0000  ES=0B52  SS=0B62  CS=020E  IP=040A   NV UP EI PL NZ NA PO NC
020E:040A 50            PUSH    AX               (注意这里)
573085020
[第1楼]   [ 回复时间:2009-10-06 18:02 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-04-02 15:26
你是纯DOS 吗,书上说的好像要再纯DOS下,才不会出现指令错误呢!你的好好看看书吗!
ndxhoubin
[第2楼]   [ 回复时间:2009-10-19 15:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2008-11-29 19:08
我就出现过指令错误不是在纯DOS下,不过LZ说不这个问题是这样的,默认情况下,这个EI应该是1吧,因为我试了试,第一次我用CLI这个大家都知道是将IF置为0,这时那个EI变成了DI此时外中断被暂时屏蔽,最后用,STI后,DI变成EI,而书上说的,STI可是把IF改为1那么,由此在默认情况下,CPU是响应中断的

这也就是LZ为什么一开始都没看见IF发生变化

还有就是那个一开始IF和TF就为0了,那是CPU在调用中断时,这个活CPU就做了
哈哈,我也是初学不知道理解的对不对,希望各位大侠指教
guanchun
[第3楼]   [ 回复时间:2010-04-22 10:20 ]   [引用]   [回复]   [ top ] 
荣誉值:11
信誉值:0
注册日期:2010-04-22 09:56
这个问题很简单

首先,这个程序运行到这里的时候,实际上处于一个什么阶段?

其实就是已经在调用INT 9中断例程了

也就是说,你看到他没有变化,其实是已经变化完了的

从头来说就是:按下ESC,扫描码送入60H,引发9号中断(此时pushf,if tf=0之流已经自动做了),进入你定义的int9,然后你在自己的int9中调用原int9应该调用的地址处的一个程序

所以,你不用改了
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved