Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
45
Добавлен:
20.06.2014
Размер:
105.98 Кб
Скачать

2.2. Сегментация памяти эвм с микропроцессором Intel 8086

По сравнению с PDP-11 в ЭВМ с процессором Intel 8086 для формирования 20-разрядного адреса используется особая структура оперативной памяти. Все пространство памяти разделяется на сегменты из смежных ячеек по 64 Кбайта каждый. Причем в любой момент времени процессор может обращаться к ячейкам 4-ёх сегментов, которые программно выбраны в качестве текущих. Сегментация памяти обеспечивает удобный механизм вычисления адресов и способствует модульному проектированию программ.

Начальные адреса текущих сегментов (адреса первых байтов сегментов) записываются в сегментные регистры CS, DS, SS, ES, тем самым фиксируются текущие сегменты кода (программы), данных, стека и дополнительных данных. Для обращения к командам и данным, находящихся в других сегментах, необходимо изменять содержимое сегментных регистров, что позволяет использовать все пространство памяти в 1 Мбайт. Сегментные регистры инициализируются в начале программы путем засылки в них соответствующих констант. Частный случай загрузки всех сегментных регистров нулями приводит к организации памяти характерной для PDP-11, т.е. к отказу от сегментации памяти.

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

Полная информация, необходимая для определения 20-битового физического адреса ячейки (выдается на шину адреса в начале цикла шины, связанной с обращением к памяти) содержится в адресном объекте <сегмент : смещение>, который называется указателем адреса (логический адрес). Для хранения указателя необходимо два слова: слово с большим адресом содержит начальный адрес сегмента (базу сегмента), слово с меньшим адресом – внутрисегментное смещение, которое определяет расстояние от начала сегмента до нужной ячейки. Например, команды выбираются из текущего кодового сегмента в соответствии с логическим адресом CS:IP, к стеку можно обратиться по адресу SS:SP, обращение к операнду может быть организовано по адресу DS:SI. Здесь IP – регистр указатель команд, SP – регистр указатель стека, SI – индексный регистр.

Для вычисления физического адреса база сегмента сдвигается влево на 4 бита и суммируется со смещением.

Рис.4.7. Вычисления физического адреса у Intel 8086

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

Соседние файлы в папке Лекции + Экзамен (билеты, ответы)