在系统程序或应用程序由于某种需要而提供新的中断处理程序时,就要设置对应的中断向量,使其指向新的中断处理程序。
1.设置中断向量
设置中断向量一般有两种方法:直接写入法和使用 DOS 调用法。
方法1:直接写入法用 MOV 指令将中断向量直接写入中断向量表,下面是一个直接写入法的例子。
例使用直接写入法设置中断向量
MOV AX ,0
MOV DS , AX
MOV BX , n *4
CLI
MOV WORD PTR [ BX ], OFFSET INTHAND
MOV WORD PTR [ BX +2], SEG INTHAND
STI
方法2:使用 DOS 功能调用法使用25H号 DOS 功能调用可以设置中断向量,出口参数如下:
预置: AH =25H
AL =中断类型号
DS : DX =中断向量
执行:INT 21H
功能:将指定的中断向量写入中断向量表。
例使用 DOS 功能调用设置中断向量。
INTHAND :
MOV AX , SEG INTHAND
MOV DS , AX
MOV DX , OFFSET INTHAND
MOV AH ,25H
MOV AL , n
INT 21H
2.获取中断向量
获取中断向量也有两种常用方法:
直接读取法和使用 DOS 功能调用法。
方法1:直接读取法利用 MOV 指令直接读取中断向量。
例利用直接读取法读取 n 号中断向量,并保存在双字变量 OLDVECTOR 中:
XOR AX , AX
MOV ES , AX
MOV AX , ES :[ n *4]
MOV WORD PTR OLDVECTOR , AX
MOV AX , ES :[ n *4+2]
MOV WORD PTR OLDVECTOR +2, AX
方法2:使用 DOS 功能调用法利用35H号 DOS 功能调用可以取得指定中断号的中断向量,其出入口参数如下:
预置: AL 中断类型号
执行: INT 21H
功能:读取指定中断的中断向量,其中:
ES =中断处理程序的段地址
BX =中断处理程序的偏移地址
例7-4使用 DOS 功能调用取得 n 号中断的中断向量
MOV AH ,35H
MOV AL , n
INT 21H
MOV WORD PTR OLDVECTOR , ES
MOV WORD PTR OLDVECTOR , BX