Assembler - язык неограниченных возможностей


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


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


Функция DOS 31h: Оставить программу резидентной

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


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


INT 27h: Оставить программу резидентной

Ввод: АН = 27h
DX = адрес последнего байта программы (считая от начала PSP) + 1


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

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





Начало  Назад  Вперед