eXeL@B —› Программирование —› комп просто напросто перезагружается. |
Посл.ответ | Сообщение |
|
Создано: 30 января 2013 20:52 · Поправил: Abraham · Личное сообщение · #1 Привет!При написании загрузчика, для своей ОС, я столкнулся вот с такой проблемой: при переводе CPU в UNREAL MODE (нереальный режим) комп просто напросто перезагружается. Я в сети находил много примеров по переводу процессора в нереальный режим, но они были написаны на TASM (пытался перевести на NASM, но эффект тот же самый) или вовсе нерабочие!!! Листал многие книги (Зубков, Кулаков …) Но результат нулевой ? !!! Вот мой исходничек, укажите на ошибку или предложите свой вариант (желательно для NASM): Code:
|
|
Создано: 30 января 2013 21:15 · Личное сообщение · #2 |
|
Создано: 31 января 2013 10:52 · Поправил: OKOB · Личное сообщение · #3 Почитайте Защищенный режим процессоров Intel 80286/80386/80486 © Александр Фролов, Григорий Фролов Том 4, М.: Диалог-МИФИ, 1993 В частности 234 стр. Перед тем, как переключить процессор в защищённый режим, надо выполнить некоторые подготовительные действия, а именно: Подготовить в оперативной памяти глобальную таблицу дескрипторов GDT. В этой таблице должны быть созданы дескрипторы для всех сегментов, которые будут нужны программе сразу после того, как она переключится в защищённый режим. Впоследствии, находясь в защищённом режиме, программа может модифицировать GDT (если, разумеется, она работает в нулевом кольце защиты). Программа может модифицировать имеющиеся дескрипторы или добавить новые, загрузив заново регистр GDTR. Для обеспечения возможности возврата из защищённого режима в реальный необходимо записать адрес возврата в реальный режим в область данных BIOS по адресу 0040h:0067h, а также записать в CMOS-память в ячейку 0Fh код 5. Этот код обеспечит после выполнения сброса процессора передачу управления по адресу, подготовленному нами в области данных BIOS по адресу 0040h:0067h. Запретить все маскируемые и немаскируемые прерывания. Открыть адресную линию A20. Запомнить в оперативной памяти содержимое сегментных регистров, которые необходимо сохранить для возврата в реальный режим, в частности, указатель стека реального режима. Загрузить регистр GDTR. Мало что изменилось с того времени вот код от этой книги http://read.pudn.com/downloads151/ebook/657619/[Frolov][Zaschischenny_rezhim_processorov_Intel]/V06/LST4-15/TOSSYST.ASM__.htm а это в другой книге, но код вероятно списан у Фроловых http://litrus.net/book/read/65872?p=36 ----- 127.0.0.1, sweet 127.0.0.1 | Сообщение посчитали полезным: Abraham, Zoeken |
eXeL@B —› Программирование —› комп просто напросто перезагружается. |