Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
10. Программирование на ассемблере ПЭВМ.Обработ...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
568.32 Кб
Скачать

5Резидентные программы

В большинстве случаев пользовательские обработчики прерываний необходимо резидентно сохранять в памяти в течение всего сеанса времени работы ПЭВМ. Общая схема работы в этом случае выглядит следующим образом. Сначала запускается специальная программа - инсталлятор, которая содержит программу-обработчика и специальную часть, выполняющую корректировку нужного вектора, и завершающуюся без удаления из памяти. Затем работают программы, использующие данный обработчик. Для удаления пользовательского обработчика прерывания из памяти обычно используется перезагрузка.

Ниже приводятся структуры инсталляторов COM и EXE-файлов.

Для COM-файлов:

org 100H

begin: jmp short set_up ; передача управления инсталлятору

; обработчик

user proc far

<обработка >

iret

finish equ $

user endp

; инсталлятор

set_up mov DX,offset user ; вызов функции DOS

mov AL,<номер прерывания> ; для записи нового

mov AH,25H ; вектора

int 21H ;

.......

lea DX,finish ; выход с сохранением процедуры

Int 27h ; обработчика в памяти

Для COM-файлов инсталляция выполняется достаточно просто, так как префикс программного сегмента (PSP) и сама программа находятся в одном сегменте (см. рисунок 4, а).

Для EXE-файлов:

; резидент

user proc far

<обработка>

iret

finish equ $

user endp

; инсталлятор

set_up proc far

push DS

mov AX,0

push AX

mov DX,offset user

mov AX,seg user

mov DS,AX

mov AL,<номер прерывания>

mov AH,25H

int 21H

mov DX,finish+100H

mov byte ptr ES:1,27H

ret

При инсталляции EXE-файлов, определяя размер резидентной части, приходится учитывать размер области PSP (100H) (см. рисунок 4, б), так как адрес finish считается относительно СS и не учитывает PSP.

Рисунок 4 – Структура программ инсталляции а) COM-файла, б) EXE-файла