Установить защищённый режим работы процессора
Функция переключает процессор из реального режима в защищённый. Кроме этого, она производит перепрограммирование контроллеров прерываний, необходимое из-за конфликта используемых в реальном режиме векторов аппаратных прерываний с зарезервированными прерываниями защищённого режима. Регистры на входе: AH 89h BH Номер прерывания для IRQ0, используется для перепрограммирования первого контроллера прерывания. Этот номер должен быть кратен 8. BL Номер прерывания для IRQ8, используется для перепрограммирования второго контроллера прерывания. Этот номер также должен быть кратен 8. ES:SI Адрес таблицы GDT, подготовленной специальным образом. Регистры на выходе: CARRY = 0 Функция выполнилась без ошибки. AH 00h CS, DS, ES, SS В эти регистры заносятся значения в соответствии с подготовленной перед вызовом функции таблицей GDT, адрес которой задаётся в регистрах ES:SI. В случае ошибки: CARRY = 1 Произошла ошибка при входе в защищённый режим. AH FF
Подготовленная перед вызовом функции 89h таблица GDT должна состоять из восьми дескрипторов:
Таблица 7. GDT для перехода в защищённый режим средствами BIOS.
0 | Пустой дескриптор, содержит нули во всех полях. |
1 | Дескриптор, описывающий таблицу GDT. |
2 | Дескриптор, описывающий таблицу IDT. |
3 | Дескриптор для сегмента данных, сответствует селектору, который будет загружен в регистр DS. |
4 | Дескриптор дополнительного сегмента данных (регистр ES). |
5 | Дескриптор сегмента стека (регистр SS). |
6 | Дескриптор сегмента кода (регистр CS). |
7 | Этот дескриптор инициализировать не надо, он будет использоваться функцией 89h для адресации сегмента данных BIOS. |
В рамках прерывания INT15h нет функции для возврата из защищённого режима в реальный. Почему?
Потому, что во-первых, в защищённом режиме прерывание 15h зарезервировано фирмой Intel, во-вторых, для работы в защищённом режиме вами подготавливается таблица IDT и определяются заново все обработчики прерываний. Обработчики прерываний BIOS рассчитаны на работу в реальном режиме и после перехода в защищённый режим становятся недоступны.