DPMI, функция 0301h Вызвать процедуру реального режима, заканчивающуюся командой RET FAR
Вход:
AX=0301h
BH – флаги:
бит 0 – сбросить контроллер прерывания и адресную линию A20
биты 1–7 – зарезервированы и должны быть равны нулю
CX – количество слов, которые надо скопировать из стека защищенного режима в стек реального
ES:(E)DI – селектор: смещение структуры вызова реального режима (формат структуры вызова реального режима описан в функции 0300h)
Выход:
CF=0, если функция выполнена успешно
ES:(E)DI – селектор: смещение модифицированной структуры вызова реального режима
CF=1, если при выполнении функции возникли ошибки
Описание. Данная функция вызывает процедуру реального режима, заканчивающуюся командой RET FAR.
Примечания.
Адрес процедуры должен быть указан в структуре вызова реального режима. Процедура должна завершать выполнение командой RET FAR. Если поля SS и SP равны нулю, то стек выделяется DPMI. 32-битные программы должны использовать ES:EDI для адресации структуры.
DPMI, функция 0302h Вызвать процедуру реального режима, заканчивающуюся командой IRET
Вход:
AX=0302h
BH – флаги:
бит 0 – сбросить контроллер прерывания и адресную линию A20
биты 1–7 – зарезервированы и должны быть равны нулю
CX – количество слов, которые надо скопировать из стека защищенного режима в стек реального
ES:(E)DI – селектор: смещение структуры вызова реального режима (формат структуры вызова реального режима описан в функции 0300h)
Выход:
CF=0, если функция выполнена успешно
ES:(E)DI – селектор: смещение модифицированной структуры вызова реального режима
CF=1, если при выполнении функции возникли ошибки
Описание. Данная функция вызывает процедуру реального режима, заканчивающуюся командой IRET.
Примечания.
Адрес процедуры должен быть указан в структуре вызова реального режима. Процедура должна завершать выполнение командой IRET. Если поля SS и SP равны нулю, то стек выделяется DPMI. 32-битные программы должны использовать ES:EDI для адресации структуры.
DPMI, функция 0400h Получить версию DPMI
Вход:
AX=0400h
Выход:
CF=0
AH – версия DPMI
AL – подверсия DPMI
BX – флаги:
Бит 0=1, если программа запущена под управлением DPMI для 80386
Бит 1=1, если процессор вернулся в реальный режим для обработки прерываний
Бит 2=1, если поддерживается виртуальная память
Бит 3 – зарезервирован и не определяется
Остальные биты зарезервированы для использования в будущем и должны быть равны нулю.
CL – тип процессора:
CL=2 – 80286
CL=3 – 80386
CL=4 – 80486
DL – текущее значение базы первого контроллера прерываний
DH – текущее значение базы второго контроллера прерываний
Описание.
Данная функция возвращает версию DPMI.
DPMI, функция 0500h Получить информацию о свободной памяти
Вход:
AX=0500h
ES:(E)DI – селектор: смещение 30-байтного буфера
Выход:
CF=0, если функция выполнена успешно
ES:(E)DI – селектор: смещение, содержащий структуру (Таблица Г-2).
CF=1, если при выполнении функции возникли ошибки
Описание. Данная функция возвращает информацию о свободной памяти.
Примечания.
32-битные программы должны использовать ES:EDI для адресации буфера. Только первое поле структуры гарантированно содержит правильное значение, остальные поля, в случае, если они не поддерживаются, содержат 0FFFFFFFFh (-1).
Таблица Г-2. Формат структуры информации о свободной памяти DPMI, функция 0501h Выделить блок памяти
Вход:
AX=0501h
BX:CX – размер блока свободной памяти, который нужно выделить (в байтах)
Выход:
CF=0, если функция выполнена успешно
BX:CX – линейный адрес выделенного блока памяти
SI:DI – индекс блока памяти (используется для изменения размера и освобождения памяти)
CF=1, если при выполнении функции возникли ошибки
Описание. Данная функция выделяет блок памяти.
Примечания.
Данная функция не выделяет никаких дескрипторов.
DPMI, функция 0502h Освободить блок памяти
Вход:
AX=0502h
SI:DI – индекс блока памяти
Выход:
CF=0, если функция выполнена успешно
CF=1, если при выполнении функции возникли ошибки
Описание. Данная функция освобождает блок памяти.
Примечания.
Программа должна освободить все дескрипторы, которые были выделены для адресации этого блока памяти.
DPMI, функция 0503h Изменить размер блока памяти
Вход:
Читать дальше
Конец ознакомительного отрывка
Купить книгу