汇编网首页登录博客注册
fpamc的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态

[2012-05-18 22:17] 第15章作业

第十五章
检测点15.1
(1) 仔细分析一下书中的in9中断例程,看看是否可以精简一下?
其实在我们的int 9中断例程中,模拟int指令调用原int 9中断例程的程序段是可以精简的,因为在进入中断例程后,IF和TF都已置0,没有必要再进行设置了,对于程序段:
 pushf    ;标志寄存器入栈
 pushf
 pop bx
 and bh,11111100b  ;IF和TF为flag的第9位和第8位
 push bx
 popf ;TF=0,IF=0
 call dword ptr ds:[0] ;CS、IP入栈;(IP)=ds:[0],(CS)=ds:[2]

可以精简为:
 pushf    ;标志寄存器入栈
 call dword ptr ds:[0] ;CS、IP入栈;(IP)=ds:[0],(CS)=ds:[2]

检测点15.1
(2) 仔细分析程序中的主程序,看看有什么潜在的问题?
在主程序中,如果在设置执行设置int 9中断例程的段地址和偏移地址的指令之间发生了键盘中段,则CPU将转去一个错误的地址执行,将发生错误。
找出这样的程序段,改写他们,排除潜在的问题。

;在中断向量表中设置新的int 9中断例程的入口地址
 cli   ;设置IF=0屏蔽中断
 mov word ptr es:[9*4],offset int9
 mov es:[9*4+2],cs
 sti   ;设置IF=1不屏蔽中断
评论次数(2)  |  浏览次数(246)  |  类型(汇编作业) |  收藏此文  | 

[  tomato   发表于  2012-05-18 22:40  ]

15.1的第二题应该是在两个地方添加,博主说的是一处,另外还有一处哦!

[  fpamc   发表于  2012-05-18 22:43  ]

在后边那个设置入口的地方

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码