Электронная библиотека книг Александра Фролова и Григория Фролова.
 
Библиотека
Братьев
Фроловых
Электронная библиотека книг Александра Фролова и Григория Фролова.
Библиотека системного программиста
Программирование на JAVA
ПК. Шаг за шагом
Другие книги
Восстановление данных
Антивирусная защита
Статьи для
программистов
Пользователю компьютера

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

© Александр Фролов, Григорий Фролов
Том 4, М.: Диалог-МИФИ, 1993, 234 стр.

[Назад] [Содеожание] [Дальше]

5.6. Переключение в защищённый и реальный режимы

Процессоры i80386 и i80486 могут легко переключаться из реального режима в защищённый и обратно с помощью команды MOV. Младший бит PE системного регистра CR0 (см. приложение) определяет текущий режим работы процессора. Если этот бит установлен в 1, процессор работает в защищённом режиме, а если в 0 - в реальном.

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

mov     ax,     cr0
or      ax,     1
mov     cr0,    ax

Для совместимости с процессором i80286 оставлена возможность переключения в защищённый режим с помощью команды LMSW.

Для возврата в реальный режим необходимо сбросить бит PE:

mov     ax,     cr0
and     ax,     0fffe
mov     cr0,    ax

Таким образом, существует более красивый способ возврата в реальный режим, чем выполнение аппаратного сброса или перевод процессора в состояние отключения (конечно, вы по-прежнему можете пользоваться старым способом перевода процессора в реальный режим).

Перед переключением в реальный режим из защищённого программа должна выполнить следующие действия:

  • обеспечить равенство линейных адресов физическим;
  • отключить трансляцию страниц, сбросив бит PG в регистре CR0;
  • загрузить ноль в регистр CR3 для сброса кэш-памяти страниц;
  • передать управление сегменту кода с пределом 64 килобайта;
  • загрузить в сегментные регистры SS, DS, ES, FS, GS селекторы дескрипторов, подготовленных для адресации памяти в реальном режиме и содержащих соответствующие реальному режиму значения;
  • запретить маскируемые и немаскируемые прерывания;
  • сбросить бит PE, переключив процессор в реальный режим;
  • выполнить команду дальнего перехода для очистки внутренней очереди команд процессора;
  • настроить систему прерываний для работы в реальном режиме;
  • разрешить прерывания;
  • загрузить в сегментные регистры значения, необходимые для работы в реальном режиме.

Как видите, процедура возврата в реальный режим сильно упростилась и ускорилась по сравнению с использованной для процессора i80286. Однако большинство программ, переключившись в защищённый режим, никогда больше не возвращаются назад. Они либо всё время работают в защищённом режиме, либо переключаются в режим виртуального процессора 8086.

[Назад] [Содеожание] [Дальше]


Создание интернет-магазинов: http://www.shop2you.ru/ © Александр Фролов, Григорий Фролов, 1991-2016