Функция 31h, закрепив за резидентной программой необходимую для ее функционирования память, передает управление командному процессору COMMAND.СОМ, и вычислительная система переходит, таким образом, в исходное состояние. Наличие программы, резидентной в памяти, никак не отражается на ходе вычислительного процесса за исключением того, что уменьшается объем свободной памяти. Одновременно может быть загружено несколько резидентных программ.
Для того, чтобы активизировать резидентную программу, ей надо как-то передать управление и, возможно, параметры. Как правило, активизация резидентной программы осуществляется с помощью механизма прерываний.
Кроме того, специально для взаимодействия с резидентными программами в DOS предусмотрено мультиплексное прерывание 2Fh.
Рассмотрим типичную структуру резидентной программы и системные средства оставления ее в памяти. Как уже отмечалось, резидентные программы чаще всего пишутся в формате .СОМ:
code segment
assume CS:text,DS:text
org 100h
main proc
jmp init ;Переход на секцию инициализации
... ; Данные резидентной секции программы
entry: ; Точка входа при активизации
... ; Текст резидентной секции программы
iret
main endp
ressize=$-myproc ; Размер (в байтах) резидентной секции
init proc ; Секция инициализации
...
mov DX,(ressize+1OFh)/16 ;Размер в параграфах
mov AX,3100h ;Функция "завершить и
int 21h ; оставить в памяти"