| Справочник программиста на персональном компьютере фирмы IBM | 40 |
своего прерывания получите текущее значение вектора, используя
эту функцию, сохраните эти значения, и затем восстановите их с
помощью функции 25H (как выше) перед завершением своей программы.
Например:
;-в сегменте данных:
KEEP_CS DW 0 ;хранит сегмент заменяемого прерывания
KEEP_IP DW 0 ;хранит смещение прерывания
;-в начале программы
MOV AH,25H ;функция получения вектора
MOV AL,1CH ;номер вектора
INT 21H ;теперь сегмент в ES, смещение в BX
MOV KEEP_IP,BX ;запоминаем смещение
MOV KEEP_CS,ES ;запоминаем сегмент
; -в конце программы
CLI
PUSH DS ;DS будет разрушен
MOV DX,KEEP_IP ;подготовка к восстановлению
MOV AX,KEEP_CS ;
MOV DS,AX ;подготовка к восстановлению
MOV AH,25H ;функция установки вектора
MOV AL,1CH ;номер вектора
INT 21H ;восстанавливаем вектор
POP DS ;восстанавливаем DS
STI
Имеется пара ловушек, которых следует избегать при написании
прерывания. Если новая процедура прерывания должна иметь доступ к
данным, то необходимо позаботиться, чтобы DS был правильно уста-
Предыдущая страница 40 Следующая страница
2112276385
|