Иллюстрированный самоучитель по Assembler


Организация приложений MS-DOS - часть 26


Функция 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                                      ; оставить в памяти"




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



Книжный магазин