27.06.2019, 08:28 [+3 UTC]
в нашей команде: 3 725 чел. | участники онлайн: 2 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.77 (31.05.2019)
JS-v.1.34 | CSS-v.3.35

Общие новости:
28.04.2019, 09:13

Форум:
23.06.2019, 07:55

Последний вопрос:
26.06.2019, 16:47
Всего: 149867

Последний ответ:
27.06.2019, 01:23
Всего: 258654

Последняя рассылка:
27.06.2019, 01:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
15.02.2010, 11:46 »
Мироненко Николай Николаевич
Спасибо большое! По поводу старины 8-ой версии - я пока что поработаю в этой, тем более сильных различий в этих версий я не заметил(9.01 уже видел). smile [вопрос № 176645, ответ № 259440]
05.02.2019, 13:16 »
dar777
Это самое лучшее решение! [вопрос № 194545, ответ № 277373]
27.09.2010, 09:18 »
Ткаченко Алиса Леонидовна
Вот это мне и нужно было - методология решения! [вопрос № 180010, ответ № 263196]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Модератор
Рейтинг: 293
Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 229
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 84

Перейти к консультации №:
 

Консультация онлайн # 69096
Раздел: • Assembler
Автор вопроса: RIV
Отправлена: 30.12.2006, 01:56
Поступило ответов: 1

Здравствуйте уважаемые эксперты. Помогите написать небольшую программу переводящую процессор из реального режима в защищенный. Привожу код, программа загружается со второго сектора флоппи, непосредственно из биоса и загружает ее программа неходящааяся на первом секторе, и комп перегружается.
Вопросов несколько - при переходе в защищенный режим после команд
mov EAX,cr0;
or eax,1;
mov cr0,eax;
объясните как процессор переходит на следующую команду, ведь если он уже работает в защищенном режиме значит он обращается к памяти через gdt_null, так как cs = 0, что и вызывает ошибку. По моему тоже самое должно происходить при переходе в реальный режим, только без ошибки. Просто вычитал этот код в одной книге и стало интересно. Подскажите что вообще не правильно сделал и как правильно перевести проц в защищенный режим?

Приложение:

Состояние: Консультация закрыта

Ответ # 134238 от Ramok

Здравствуйте, RIV!

Очень резонный вопрос Ж:-)
Все дело в так называемых теневых регистрах(shadow register). Дело в том что при каждом обращении к памяти, процессор не вычисляет все значения через gdt или ldt как можно было бы подумать(представьте себе накладные расходы такого варианта). Вычисления происходят только при изменения значения сегментных регистров(cs, ds, ss....), а вычесленная информация заностится в теневые регистры.
В них хранится база, лимит и права доступа.

Так что когда вы меняете cr0, то вычисление адреса по прежнему происходит из теневых регистров пока вы не изменяете сегментный регистр.

Отсюда можно сделать два вывода:
1. Вычисление через адреса в реальном режиме все равно проиходит через эти теневые регистры, просто база, лимиты и права соответствуют тому, чему мы привыкли в реальном режиме.

2. Если вы решили изменить дескриптор какого то либо сегмента, то для того что бы изменения занеслись в сегментный регистр, вам нужно перезагрузить соответствующий сегментный регитр.

Дополнительную информацию можно найти в поисковых системах интернет по запросу "теневые регистры защищенный режим"


Консультировал: Ramok
Дата отправки: 30.12.2006, 02:45

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 1.42183 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.77 от 31.05.2019
Версия JS: 1.34 | Версия CSS: 3.35