Защищенный режим процессоров Intel 80286 80386 80486

         

Эмуляция прерывания реального режима


Эта функция предназначена для эмуляции выполнения прерывания в реальном режиме. С её помощью вы сможете находясь в защищённом режиме обращаться к функциям BIOS, DOS и к другим прерываниям реального режима. Регистры на входе AX 0300h BL Номер прерывания. BH Байт флагов. Если установлен в единицу бит 0, выполняется сброс контроллера и линии A20. Остальные биты зарезервированы и должны быть сброшены в нуль. CX Количество слов, которые должны быть скопированы из стека защищённого режима в стек реального режима. ES:(E)DI Адрес управляющей структуры для вызова прерывания. Регистры на выходе: CARRY 0, если функция выполнилась без ошибки, 1, если произошла ошибка. ES:(E)DI Адрес модифицированной (в результате выполнения обработчика прерывания) управляющей структуры в формате защищённого режима.

Управляющая структура содержит значения для инициализации регистров перед вызовом эмулируемого прерывания реального режима. Она имеет следующий формат:

Таблица 11. Формат управляющей структуры для эмуляции прерывания реального режима средствами DPMI.



СмещениеРегистр
00hEDI
04hESI
08hEBP
0ChЗарезервировано
10hEBX
14hEDX
18hECX
1ChEAX
20hFLAGS
22hES
24hDS
26hFS
28hGS
2AhIP
2ChCS
2EhSP
30hSS

Ваша программа, находясь в защищённом режиме, может не только вызвать прерывание реального режима, но и передать параметры через стек, указав в управляющей структуре их количество. Наример: push Parametr1 push Parametr2 push Parametr3 mov cx, 3 ; Копируем три параметра mov ax, 0301h int 31h add sp, 6 ; Восстанавливаем стек

Обработчик прерывания реального режима получит стек, подготовленный следующим образом: Parametr1 Parametr2 Parametr3 CS для возврата IP для возврата

Указатель стека реального режима SS:SP установлен на слово, содержащее IP для возврата.

Содержание раздела