Формирование физического адреса в реальном режиме.

      Комментарии к записи Формирование физического адреса в реальном режиме. отключены

В реальном режиме механизм адресации физической памяти имеет следующие характеристики:

— Диапазон изменения физического адреса от 0 до 1Мбайта. Эта величина определяется тем, что шина адреса i8086 имела 20 линий;

— Максимальный размер сегмента 64 Кбайта. Это объясняется 16-разрядной архитектурой i8086. Максимальное значение, которое могут содержать 16-разрядные регистры, составляет 64 Кбайта;

— Для обращения к конкретному физическому адресу оперативной памяти необходимо определить адрес начала сегмента и смещение внутри сегмента. Сегментная составляющая адреса представляет собой всего лишь 16-битное значение, помещенное в один из сегментных регистров. Адрес начала сегмента может быть только в диапазоне 0-64 Кбайт от начала оперативной памяти. Возникает вопрос о том, как адресовать остальную часть оперативной памяти вплоть до 1 Мбайта с учетом того, что размер самого сегмента не превышает 64 Кбайта. Дело в том, что в сегментном регистре содержатся только старшие 16 бит физического адреса начала сегмента. Недостающие младшие четыре бита 20-битного адреса получаются сдвигом значения в сегментном регистре влево на 4 разряда. Эта операция сдвига выполняется аппаратно и для программного обеспечения абсолютно прозрачна. Получившееся 20-битное значение и является настоящим физическим адресом, соответствующим началу сегмента. Что касается второго компонента, участвующего в образовании физического адреса некоторого объекта памяти, — смещения, — то оно представляет собой 16-битное значение. Это значение может содержаться явно в команде либо косвенно в одном из регистров общего назначения. В микропроцессоре эти две составляющие складываются на аппаратном уровне, в результате чего получается физический адрес памяти разрядностью 20 бит. Данный механизм образования физического адреса позволяет сделать программное обеспечение перемещаемым, то есть не зависящим от конкретных адресов загрузки его в оперативной памяти. Образование физического адреса представлено на рисунке 1.

Каждая программа в общем случае может состоять из любого количества сегментов, но непосредственный доступ она имеет только к трем основным: кода, данных и стека, — и от одного до трех дополнительных сегментов данных. Программа никогда не знает, по каким физическим адресам будут размещены ее сегменты. Этим занимается операционная система. Операционная система размещает сегменты программы в оперативной памяти по определенным физическим адресам, после чего помещает значения этих адресов в определенные места. Куда именно, зависит от режима работы микропроцессора. Так в реальном режиме эти адреса помещаются непосредственно в соответствующие сегментные регистры, а в защищенном режиме они размещаются в элементы специальной системной дескрипторной таблицы. Внутри сегмента программа обращается к адресам относительно начала сегмента линейно, то есть начиная с 0 и заканчивая адресом, или смещение, который микропроцессор использует для доступа к данным внутри сегмента, называется эффективным.

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

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

Для определения физического

адреса команды используются регистры CS и IP, Рисунок 1 – Формирование физического адреса

для физического адреса операнда – DS и смещение, указанное в команде и для физического адреса ячейки стека – SS и SP.

Недостатки такой организации памяти:

— Сегменты бесконтрольно размещаются с любого адреса, кратного 16.;

— Сегменты имеют максимальный размер 64 Кбайт;

— Сегменты могут перекрываться с другими сегментами.

Краткие теоретические сведения к лабораторной работы № 4.

Статьи к прочтению:

Все о таблицах в программе Word


Похожие статьи: