Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 1 Организация памяти вычислительных сист....doc
Скачиваний:
28
Добавлен:
27.10.2018
Размер:
666.62 Кб
Скачать

Вычисление физического адреса памяти

Физический адрес представляет собой 20-битное число в диапазоне 0...FFFFFh и 32-битное число в диапазоне 0…FFFFFFFFh для 16-битной и 32-битной адресации, которое однозначно определяет положение каждого байта в пространстве памяти объемом 1 Мбайт и 4 Гбайт соответственно.

Рассмотрим вычисление адреса ячейки памяти при 16-битной адресации.

При вычислении физического адреса база сегмента segment сдвигается влево на 4 бита и складывается со смещением offset в соответствии со схемой приведенной на рис.3.7.

Перенос из старшего разряда, возникающий при суммировании, игнорируется. Это приводит к кольцевой организации памяти, при которой за ячейкой с максимальным адресом FFFFFh следует ячейка с нулевым адресом. Аналогичную кольцевую организацию имеет и каждый сегмент. Кроме того, на рис.3.7 указаны различные источники компонент логического адреса, которые могут использоваться для вычисления физического адреса. При этом обозначение ЕА соответствует эффективному адресу, вычисляемому в соответствии с указанным в команде способом адресации операндов.

При различных типах обращения к памяти компоненты логического адреса выбираются из различных источников. Допустимые варианты источников приведены в табл. 3.1.

Из анализа этой таблицы следует, что команды всегда выбираются из текущего сегмента программного кода по логическому адресу CS:IP, стековые операции всегда выполняются в текущем сегменте стека по логическому адресу SS:SP, а при обращении к данным возможны различные варианты..

Как правило, по умолчанию считается, что данные находятся в основном, сегменте данных, и обращение к ним осуществляется по логическому адресу DS:EA. Однако, путем явного указания сегмента в описании операнда можно обратиться к данным и из любого другого сегмента.

Таблица 3.1

Источники компонент логического адреса

Тип обращения к памяти

Сегмент (по умолчанию)

Вариант сегмента

Смещение

Выборка команды

CS

Нет

IP

Стековая операция

SS

Нет

SP

Обращение к данным

DS

CS,ES,SS

ЕА

Обращение к цепочке-источнику

DS

CS,ES,SS

SI

Обращение к цепочке-приемнику

ES

Нет

DI

Обращение к данным через регистр ВР

SS

CS,DS,ES

ЕА

Разновидностью данных, обрабатываемых МП i8086/8088, являются цепочки (строки). При обработке таких данных, одна команда может оперировать с целой цепочкой элементов. При этом элементы цепочки-источника по умолчанию выбираются из основного сегмента данных по логическому адресу DS:SI, но могут выбираться и из любого другого сегмента. Цепочка-приемник может находиться только в дополнительном сегменте данных, и обращение к ее элементам осуществляется по логическому адресу ES:DI.

Если в описании операнда используется регистр ВР, то по умолчанию считается, что этот операнд находится в сегменте стека. Однако, в этом случае стековый принцип выборки данных игнорируется, и обращение к сегменту стека осуществляется как к ОЗУ с произвольным доступом. Это обеспечивает большую гибкость при обращении к данным, находящимся в стеке.