中断向量是系统用来存放中断服务程序或系统参数的入口地址。在通常情况下,程序员不需要对中断向量表作任何操作,但在开发程序时,若要为某种特殊需要而提供新的中断处理程序时,则其就必须要操作中断向量表。
DOS提供了用系统调用的方法来读取中断向量,其中断21H之功能35H就能读取指定中断号的入口地址。其使用参数如下:
入口参数:AH=35H,AL=中断号
出口参数:ES:BX=中断处理程序的入口地址
例8.15 用功能调用的方法把中断n的入口地址保存到双字变量OldAddr中。
解:
…… OldAddr DD ? …… MOV AL, n ;这里的n要用具体的中断号来定 MOV AH, 35H INT 21H MOV word ptr OldAddr, BX MOV word ptr OldAddr+2, ES ;把其入口地址保存在存储单元中 ……
由前面的图8.2不难看出:中断向量表是存储在内存的第0段。若中断号为n,那么,其入口地址在表内的偏移量为4n。
例8.16 用直接访问存储单元的方法把中断n的入口地址保存到双字变量OldAddr中。
解:
…… OldAddr DD ? …… MOV? AX, 0H MOV ES, AX? ;中断向量表存储在第0段内 MOV? BX, 4*n MOV AX, ES:[BX] ;读取中断入口地址的偏移量 MOV word ptr OldAddr, AX?? ;保存中断入口地址的偏移量 MOV AX, ES:[BX+2]?? ;读取中断入口地址的段地址 MOV word ptr OldAddr+2, ES? ;保存中断入口地址的段地址