mov eax,cr0
or al,1
mov cr0,eax
Переход в protected mode
Уважаемые, подскажите интересующемуся как можно выйти (и желательно очень подробно) в protected mode процессора.
sasm.narod.ru Очень хорошо рассказано. С примерами
Нужно будет заполнить таблицу дескрипторов.
И в вкратце:
1)3 дескриптора (кода, данных, стека. Можно взять вырожденный случай и всех предел 4 Гб)
2)Заполнить таблицу дескрипторов (64 бита) и запихнуть её на место командой LGDT
3)Определить линейные адреса и запихнуть в дескрипторы.
4)Вырубить все прерывания (АБСОЛЮТНО ВСЕ! только cli не отделаешься)
5)Установить в регистре Cr0 1й бит. C Cr0 работает только mov. Так что так
Код:
6)ДАЛЬНИЙ переход, для установления новых значенией в сегментные регистры.
Вообще тут ты (сразу!) оказываешься в защищенном режиме. Всё я расписал грубо, но могу дополнить. Это самый простой вариант, т.к. при работе в защищенном режиме тебе пройдется настраивать ВСЕ прерывания (в описанной мною схеме прерывания остаются dshe,ktysvb). Для возврата обратно, сбрасываешь 1й бит в cr0, но предварительно устанавливаешь верные в реальном режиме сегменты (а можно перейти в этом случае в нереальный режим, т.е. реальный режим, а память 4 Гб.:)).И снова дальний переход.
Цитата:
Originally posted by cOZA
Уважаемые, подскажите интересующемуся как можно выйти (и желательно очень подробно) в protected mode процессора.
Уважаемые, подскажите интересующемуся как можно выйти (и желательно очень подробно) в protected mode процессора.
Поиск по форуму тоже рулит )