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

Программы, остающиеся в памяти после того, как управление возвращается в DOS, называются резидентными. Превратить программу в резидентную просто -достаточно вызвать специальную системную функцию DOS.

Функция DOS31H: Оставить программу резидентной Вход:   АН = 31h

AL = код возврата

DX = размер резидента в 16-байтных параграфах (больше 06h), считая от начала PSP

Кроме того, существует и иногда используется предыдущая версия этой фун­кции - прерывание 27h:

INT27h: Оставить программу резидентной Вход:    AH = 27h

DX = адрес последнего байта программы (считая от начала PSP) + 1

Эта функция не может оставлять резидентными программы размером больше 64 Кб, но многие программы, написанные на ассемблере, соответствуют этому усло­вию. Так как резидентные программы уменьшают объем основной памяти, их все­гда пишут на ассемблере и оптимизируют для достижения минимального размера.

Никогда не известно, по каким адресам в памяти оказываются загруженные в разное время резидентные программы, поэтому единственным несложным спо­собом получения управления механизм программных и аппаратных пре­рываний. Принято разделять резидентные программы на активные и пассивные, в зависимости от того, перехватывают ли они прерывания от внешних или получают управление, только если программа специально вызовет Команду INT с нужным номером прерывания и параметрами.