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

         

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


Эта функция предназначена для эмуляции выполнения прерывания в реальном режиме. С её помощью вы сможете находясь в защищённом режиме обращаться к функциям BIOS, DOS и к другим прерываниям реального режима.

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

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

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



Смещение Регистр
00h EDI
04h ESI
08h EBP
0Ch Зарезервировано
10h EBX
14h EDX
18h ECX
1Ch EAX
20h FLAGS
22h ES
24h DS
26h FS
28h GS
2Ah IP
2Ch CS
2Eh SP
30h SS

Ваша программа, находясь в защищённом режиме, может не только вызвать прерывание реального режима, но и передать параметры через стек, указав в управляющей структуре их количество. Наример:

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 для возврата.



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