Читать «Создаем вирус и антивирус» онлайн - страница 108

Игорь А. Гульев

Примечания.

Значение, возвращаемое в CX – сегмент, не селектор. Попытки использовать его как селектор приведут к исключению общей защиты памяти.

DPMI, функция 0201h Установить вектор прерывания реального режима

Вход:

AX=0201h

BL – номер прерывания

CX:DX – сегмент: смещение вектора прерывания реального режима

Выход:

CF=0, если функция выполнена успешно

CF=1, если при выполнении функции возникли ошибки

Описание. Данная функция устанавливает вектор прерывания реального режима.

Примечания. Значение в CX должно быть сегментом, а не селектором.

DPMI, функция 0202h Получить вектор обработчика исключения процессора

Вход:

AX=0202h

BL – номер исключения (00h-1Fh)

Выход:

CF=0, если функция выполнена успешно

CX:(E)DX – селектор: смещение

CF=1, если при выполнении функции возникли ошибки

Значение, переданное в BL, некорректно

Описание. Данная функция возвращает вектор обработчика исключения процессора.

Примечания.

Значение в CX – селектор защищенного режима, а не сегмент реального. В 32-битном режиме значение смещения возвращается в регистре EDX.

DPMI, функция 0203h Установить вектор обработчика исключения процессора

Вход:

AX=0203h

BL – номер исключения (00h-1Fh)

CX:(E)DX – селектор: смещение

Выход:

CF=0, если функция выполнена успешно

CF=1, если при выполнении функции возникли ошибки

Значение, переданное в BL, некорректно

Описание. Данная функция устанавливает вектор обработчика исключения процессора.

Примечания.

Значение в CX должно быть существующим селектором защищенного режима, а не сегментом реального. В 32-битном режиме значение смещения возвращается в регистре EDX.

DPMI, функция 0204h Получить вектор прерывания защищенного режима

Вход:

AX=0204h

BL – номер прерывания

Выход:

CF=0

CX:(E)DX – селектор: смещение

Описание. Данная функция возвращает вектор обработчика прерывания защищенного режима.

Примечания.

Значение в CX – селектор защищенного режима, а не сегмент реального. В 32-битном режиме значение смещения возвращается в регистре EDX.

DPMI, функция 0205h Установить вектор прерывания защищенного режима

Вход:

AX=0204h

BL – номер прерывания

CX:(E)DX – селектор: смещение

Выход:

CF=0, если функция выполнена успешно

CF=1, если при выполнении функции возникли ошибки

Описание. Данная функция устанавливает вектор обработчика прерывания защищенного режима.

Примечания.

Значение в CX должно быть существующим селектором защищенного режима, а не сегментом реального. В 32-битном режиме значение смещения возвращается в регистре EDX.

DPMI, функция 0300h Вызвать обработчик прерывания реального режима

Вход:

AX=0300h

BL – номер прерывания

BH – флаги:

бит 0 – сбросить контроллер прерывания и адресную линию A20

биты 1–7 – зарезервированы и должны быть равны нулю

CX – количество слов, которые надо скопировать из стека защищенного режима в стек реального

ES:(E)DI – селектор: смещение структуры вызова реального режима (Таблица Г-1)

Таблица Г-1. Формат структуры вызова реального режима

Выход:

CF=0, если функция выполнена успешно

ES:(E)DI – селектор: смещение модифицированной структуры вызова реального режима

CF=1, если при выполнении функции возникли ошибки