ВУЗ:
Составители:
32
работы программы прерывания придется запретить. Запрет всех
аппаратных прерываний осуществляется командой cli (строка 77).
В строках 78, 79 в порт 70h засылается код 80h, который запрещает
немаскируемые прерывания (которые не запрещаются командой cli).
В строках 81...83 осуществляется перевод процессора в защищенный
режим. Этот перевод можно выполнить различными способами. В
рассматриваемом примере для этого используется команда mov. Сначала
содержимое управляющего CR0 регистра считывается в аккумулятор EAX,
затем его младший бит устанавливается в 1 с помощью команды or, затем
содержимое аккумулятора опять записывается в управляющий регистр
CR0 с уже модифицированным младшим битом. Все последующие
команды выполняются уже в защищенном режиме.
Хотя защищенный режим установлен, однако действия по настройке
системы еще не закончены. Действительно, во всех используемых в
программе сегментных регистрах хранятся не селекторы дескрипторов
сегментов, а базовые сегментные адреса, не имеющие смысла в
защищенном режиме.
Рисунок 1.11 – Сегментные и теневые регистры
Отсюда можно сделать вывод, что после перехода в защищенный
режим программа не должна работать, так как в регистре CS пока еще нет
селектора сегмента команд, и процессор не может обращаться к этому
сегменту. В действительности это не совсем так.
работы программы прерывания придется запретить. Запрет всех аппаратных прерываний осуществляется командой cli (строка 77). В строках 78, 79 в порт 70h засылается код 80h, который запрещает немаскируемые прерывания (которые не запрещаются командой cli). В строках 81...83 осуществляется перевод процессора в защищенный режим. Этот перевод можно выполнить различными способами. В рассматриваемом примере для этого используется команда mov. Сначала содержимое управляющего CR0 регистра считывается в аккумулятор EAX, затем его младший бит устанавливается в 1 с помощью команды or, затем содержимое аккумулятора опять записывается в управляющий регистр CR0 с уже модифицированным младшим битом. Все последующие команды выполняются уже в защищенном режиме. Хотя защищенный режим установлен, однако действия по настройке системы еще не закончены. Действительно, во всех используемых в программе сегментных регистрах хранятся не селекторы дескрипторов сегментов, а базовые сегментные адреса, не имеющие смысла в защищенном режиме. Рисунок 1.11 – Сегментные и теневые регистры Отсюда можно сделать вывод, что после перехода в защищенный режим программа не должна работать, так как в регистре CS пока еще нет селектора сегмента команд, и процессор не может обращаться к этому сегменту. В действительности это не совсем так. 32
Страницы
- « первая
- ‹ предыдущая
- …
- 30
- 31
- 32
- 33
- 34
- …
- следующая ›
- последняя »