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


Мультиплексорное прерывание - часть 3


/p>


Рассмотрим функции, описанные в спецификации AMIS как обязательные.


INT 2Dh AL = 00h: Функция AMIS — проверка наличия резидентной программы

Ввод: АН = идентификатор программы
AL = 00h
Вывод: AL = 00h, если идентификатор не занят
AL = FFh, если идентификатор занят
СН = старший номер версии программы
CL = младший номер версии программы
DX:DI = адрес AMIS-сигнатуры, по первым шестнадцати байтам которой и происходит идентификация
Первые 8 байт — имя производителя программы, следующие 8 байт — имя программы, затем или 0 или ASCIZ-строка с описанием программы, не больше 64 байт.


INT 2Dh AL = 03h: Функция AMIS — выгрузка резидентной программы из памяти

Ввод: АН = идентификатор программы
AL = 02h
DX:BX = адрес, на который нужно передать управление после выгрузки
Вывод: AL = 01h — выгрузка не удалась
AL = 02h — выгрузка сейчас невозможна, но произойдет чуть позже
AL = 03h — резидент не умеет выгружаться сам, но его можно выгрузить, резидент все еще активен
    ВХ = сегментный адрес резидента
AL = 04h — резидент не умеет выгружаться сам, но его можно выгрузить, резидент больше неактивен
    ВХ = сегментный адрес резидента
AL = 05h — сейчас выгружаться небезопасно — повторить запрос позже
AL = 06h — резидент был загружен из CONFIG.SYS и выгрузиться не может, резидент больше неактивен
AL = 07h — это драйвер устройства, который не умеет выгружаться сам
    ВХ = сегментный адрес
AL = 0FFh с передачей управления на DX:BX — успешная выгрузка


INT 2Dh AL = 03h: Функция AMIS — запрос на активизацию

Ввод: АН = идентификатор программы
AL = 03h
Вывод: AL = 00h — резидент — «невсплывающая» программа
AL = 01h — сейчас «всплывать» нельзя — повторить запрос позже
AL = 02h — сейчас «всплыть» не могу, но «всплыву» при первой возможности
AL = 03h — уже «всплыл»
AL = 04h — «всплыть» невозможно
    ВХ,СХ — коды ошибки
AL = 0FFh — программа «всплыла», отработала и завершилась
    ВХ — код завершения
<


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