Лекция 03. Работа в реальном и защищенном режимах
В реальном режиме микропроцессор 80386 способен работать с памятью объемом до 4 Гбайт. Это достигается использованием адресов памяти как комбинации смещения команды и величины в специальном сегментном регистре. Реальный режим является упрощенным для микропроцессора 80386, в этом режиме он использует объектные коды микропроцессора 8086.
Регистры общего назначения.
Работа в защищенном режиме обеспечивает разбиение на страницы, виртуальную адресацию, многоуровневую защиту, многозадачность и возможность отладки. В этом режиме сегментный регистр содержит селектор для области в таблице преобразования адреса, называемой таблицей дескрипторов. Этот регистр служит входом в таблицу дескриптора и содержит абсолютный адрес сегмента базы. Защищенный режим активируется установкой одного из разрядов в регистрах управления микропроцессора 80386.
Сегментация адреса
Микропроцессор 80386 снабжен шестью регистрами сегмента адреса, называемыми CS, DS, SS, ES, FS и GS, что позволяет разделять коды, данные, стек и другие определяемые пользователем внешние сегменты. Такая схема сегментации допускает модульность и большой объем программ. В реальном режиме регистры сегмента адреса содержат фактический адрес базы заданного сегмента. В защищенном режиме сегментные регистры содержат 16-разрядные адреса (называемые селекторами), указывающие на таблицу дескрипторов. Фактический сегментный адрес базы вводится в таблицу дескрипторов.
Сегментная адресация в реальном режиме.
Сегментная адресация в защищенном режиме.
Длина сегмента
Отдельные сегменты могут быть длиной до 64 Кбайт или до 4 Гбайт- Это определяется атрибутами USE 16 или USE 32, вырабатывающими 16- или 32-разрядные смещения соответственно.
Разбиение на страницы
Разбиение на страницы является дополнительной адресной структурой, уникальной для защищенного режима микропроцессора 80386. Оно активируется разрядом разбиения на страницы в регистре управления CR0. Разбиение на страницы делит физическую зону адресов микропроцессора на секторы по 4 Кбайт, называемые страницами или фреймами страниц. Конкретная страница адресуется с помощью таблицы страниц объемом 1 Кбайт с каждым входом, указывающим на однокилобайтные фреймы страниц, каждая из которых занимает 4 Кбайт. Такая структура адресации позволяет микропроцессору получать доступ к адресам физическим объемом до 4 Гбайт.
Сегментные регистры Сегментные регистры
Микропроцессор 80386 поддерживает четыре одновременно доступных участка кодов, называемые сегментами. Эти четыре сегмента адресуются как 16-разрядные регистры CS, DS, SS, ES, FS и GS.
Код выполняемой в данный момент программы, находящийся в памяти, адресуется с помощью регистра CS (сегмента кода). База активного в данный момент сегмента данных адресуется с помощью регистра DS (сегмента данных). Стеки, используемые обычно для промежуточных результатов и вызова подпрограмм, также адресуются с помощью собственного сегмента памяти. Адрес базы активного в данный момент сегмента стека находится в регистре SS (сегмент стека). Кроме того, программист имеет доступ к трем активным в данный момент сегментам данных, называемым внешними и адресуемыми как регистры ES, FS и GS.