Запись адреса резидентной программы в область межзадачных связей
Размещение векторов прерывания в оперативной памяти
Вызов резидентной программы
End begin
Cseg ends
Int 27h ; оставляем программу резидентной
Mov dx, finish ; размер программы
Int 21h
Mov ah, 25h ; номер функции прерывания 21
Mov al, 70h ; выбранный номер прерывания
Mov dx, offset routine ; в dx загружается адрес процедуры
Routine endp ; конец процедуры
Iret ;возврат из процедуры
Routine proc far
push ds ;сохранение регистров
…; здесь тело процедуры
pop ds ; восстановление регистров
finish equ $ ; определение размера программы
; установка вектора прерывания
setup:
;в ds записан адрес сегмента
;оставляем программу резидентной
Для вызова резидентной программы достаточно ввести в нужное место кода транзитной программы команду int 70h.
Таблица векторов прерываний Обработчик прерывания
![]() | ![]() |
Резидентную программу можно оформить так, что адрес её будет находиться в области межзадачных связей, начало которой 40h:0f0h.
Размер области 16 байт.
В резидентной программе следует предусмотреть:
· Исполняемую часть надо закончить директивой RET
· Вызов программы с помощью команды CALL
Для записи адреса процедуры в область межзадачных связей используются следующие команды:
Setup: