王爽著课本中关于安装中断处理程序的疑问
王爽老师在《汇编语言》第12章《内中断》中讲解了中断处理程序的编写与安装。以处理第N号中断为例,步骤可以概括如下
1. 编写中断处理代码
2. 拷贝中断处理代码到一处空内存中。书中拷贝到了0200h:0处,默认此处内存是空闲的
3.修改中断表,将N号中断的处理指针指向0200h:0
在第15章《外中断》中出现了一个处理9号中断的范例。步骤概括如下
1. 编写中断处理代码
2. 不拷贝中断处理代码,直接修改中断表。将9号中断处理指针指向安装程序中的中断处理部分
(说明:中断处理代码储存在中断安装程序的源码中。运行中断安装程序时,中断处理代码被同时拷贝到内存中)
疑问:
必须要拷贝中断处理代码到空内存中吗?为何同为中断处理,这两个例子有不同的做法
如果答案是肯定的,为何第二例可以不拷贝?
如果答案是否定的,第一例的拷贝过程是否画蛇添足?
我的猜测:
拷贝处理代码,是因为安装程序所在内存区域在中断安装完成之后可能会被其他程序改写。若采用例二中的做法,中断处理可能失效。因此例二的写法只是偷懒,是不正确的。
进一步的思考,虽然安装程序运行时内存可能被改写,例一中0200h:0处内存同样可能被改写。因此例一也不是保险做法。在DOS中因为CPU运行在实模式下,不可能有真正安全的做法。
初学汇编,望各位能指点迷津。在此先谢过!