Запись адреса резидентной программы в область межзадачных связей

Размещение векторов прерывания в оперативной памяти

Вызов резидентной программы

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: