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



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


Дальнейшие действия определяются содержимым этой ячейки.

Байт состояния отключения 0Fh используется BIOS для определения способа возврата из защищённого режима в реальный после аппаратного сброса. В таблице 3 перечислены возможные значения для байта состояния отключения.

Таблица 3. Значения байта состояния отключения.

ЗначениеПричина отключения
0Программный сброс при нажатии комбинации клавиш CTRL-ALT-DEL или неожиданный сброс. Выполняется обычный перезапуск системы, но процедуры тестирования при включении питания не выполняются.

  • 1
  • Сброс после определения объёма памяти.
  • 2
  • Сброс после тестирования памяти.
  • 3
  • Сброс после обнаружения ошибки в памяти (контроль чётности).
  • 4
  • Сброс с запросом перезагрузки.
  • 5
  • После сброса перезапускается контроллер прерываний, затем управление передаётся по адресу, который находится в области данных BIOS 0040h:0067h.
  • 6,7,8Сброс после выполнения теста работы процессора в защищённом режиме.
    9Сброс после выполнения пересылки блока памяти из основной памяти в расширенную.
    0AhПосле сброса управление немедленно передаётся по адресу, взятому из области данных BIOS 0040h:0067h.

    Для обеспечения возврата в реальный режим после сброса по адресу, записанному в области данных BIOS 0040h:0067h можно использовать байты 5 и 0Ah.

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

    Если же вы не используете прерывания и, соответственно, не перепрограммируете контроллер прерываний, можно использовать значение 0Ah, при этом после сброса управление будет сразу передано по адресу, взятому из области данных BIOS 0040h:0067h. В этом случае затраченное на возврат в реальный режим время будет меньше.

    В следующем фрагменте программы мы записываем в ячейку CMOS-памяти с адресом 0Fh значение 5.

    Напомним, что для записи числа в ячейку CMOS-памяти необходимо вначале в порт с адресом 70h записать номер нужной ячейки, а затем в порт 71h - записываемые данные.

    Не удивляйтесь, что в этом фрагменте программы вместо ячейки 0Fh указано значение 8Fh - это не ошибка.


    Содержание  Назад  Вперед