Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции / I8086.DOC
Скачиваний:
73
Добавлен:
21.02.2014
Размер:
72.7 Кб
Скачать

Адресное пространство памяти и вв

Память ВМ86 логически организована как одномерный массив байтов, каждый их которых имеет 20-битовый физический адрес в диапазоне 0..FFFFFh. Любые два смежные байта могут использоваться как 16-битовое слово. Младший байт слова имеет меньший адрес, а старший байт - больший. Адресом слова считается адрес его младшего слова.

Полная информация, необходимая для определения физического адреса, содержится в адресном объекте «сегмент: смещение», который называется указателем адреса и содержит адрес сегмента и внутрисегментное смещение. Для запоминания указателя адреса требуется два 16-битовых регистра или два слова памяти, причем слово с меньшим адресом содержит смещение, а слово с большим адресом - базовый адрес сегмента.

Команды, байты и слова данных можно свободно размещать по любому адресу, что позволяет экономить память благодаря ее плотной упаковке. Однако для экономии времени выполнения программы целесообразно размещать слова данных в памяти по четным адресам, т.к. МП передает такие слова за один цикл шины. Слово с четным адресом называется выровненным на границе слов. Слова с нечетным адресом (не выровненные слова) также допустимы, но для их передачи требуется два цикла шины.

Особенно важно иметь выровненные слова для операций со стеком, т.к. в таких операциях участвуют только слова. Следовательно, указатель стека SPнеобходимо всегда инициализировать на четный адрес.

Команды всегда выбираются словами по четным адресам, за исключением первой выборки после передачи управления по нечетному адресу.

Сегментация памяти и вычисление адресов

Пространство памяти емкостью 1 Мб представляется как набор сегментов, определяемых программным путем. Сегмент состоит из смежных ячеек памяти и является независимой и отдельно адресуемой областью памяти емкостью 64 Кб. Каждому сегменту программой назначается начальный (базовый) адрес, являющийся адресов первого байта сегмента в пространстве памяти. Начальные адреса важнейших 4-х сегментов, в данный момент времени выбранных в качестве текущих, записываются в сегментные регистры CS (кодовый),SS (стека),DS (данных),ES(дополнительный сегмент данных).

В сегментном регистре хранится 16 старших битов 20-разрядного начального адреса сегмента. Четыре младших бита начального адреса сегмента по умолчанию равны нулю и дописываются к содержимому сегментного регистра при вычислении физических адресов ячеек памяти. Поэтому начальный адрес сегментов всегда начинается с параграфа, т.е. кратен 16. Других ограничений на размещение сегментов в памяти нет, поэтому сегменты могут быть соседними (смежными), не перекрывающимися, частично или полностью перекрывающимися.

Сегментные регистры обычно инициализируются в начале программы путем записи в них соответствующих констант. Частный случай загрузки всех сегментных регистров нулями приводит к организации памяти, характерной для МП КР580ВМ80А.

Логический адрес ячейки памяти состоит из двух 16-битовых беззнаковых значений: начального адреса сегмента (база или сегмент) и внутрисегментное смещение, которое определяет расстояние от начала сегмента до этой ячейки памяти.

Физический адрес ячейки памяти - это 20-битовое число в диапазоне 0..FFFFFh, которое однозначно определяет положение каждого байта в пространстве памяти. Для вычисления физического адреса база сегмента сдвигается влево на 4 бита и суммируется со смещением (рис. ).

Рис. . Преобразование логического адреса ячейки памяти в физический адрес

Источники логического адреса, как видно из рис. , для различных типов обращения к памяти могут быть различными. Команды всегда выбираются из текущего сегмента кода в соответствии с логическим адресом CS:IP. Стековые команды всегда обращаются к текущему сегменту стека по адресуSS:SP. Если при вычислении эффективного адреса ЕА используется регистр ВР, то обращение также производится к стековому сегменту. Операнды, как правило, размещаются в текущем сегменте данных по адресуDS:ЕА. С помощью однобайтового префикса замены сегмента можно кратковременно заменить сегмент в некоторой команде, например:

MOVAX, CS:[BX]; пересылка в АХ из кодового сегмента по ; косвенному адресу

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

Соседние файлы в папке лекции