Сегментация памяти. Принципы построения и использования сегментной памяти. Организация памяти и вычисление физических адресов памяти

Страницы работы

1 страница (Word-файл)

Содержание работы

Билет 24,25

24. Сегментация памяти. Принципы построения и использования сегментной памяти.

25. Организация памяти и вычисление физических адресов памяти

МП 8086 работает с сегментной организацией памяти. Сегментация памяти – это выделение отдельных областей памяти из единого адресного пространства и предоставление их в пользование.

Сегментация памяти позволяет:

-  предоставлять в пользование несколько (до четырех) независимых адресных пространств памяти;

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

20-разрядная адресная шина микропроцессора позволяет обращаться к 220== 1048576 ячейкам памяти (1 Мбайт), имеющих разрядность 8 бит. МП обеспечивает обмен с памятью байтами или словами (16-разрядными кодами) с автоматическим выбором требуемого формата. Физический адрес может изменяться от 00000h до FFFFFh (индекс h означает шестнадцатиричную систему счисления).

Для работы с памятью все адресное пространство памяти логически разбито на сегменты, каждый с максимальной длиной  до 216 = 64 Кбайт. Сегменты могут иметь следующее расположение относительно друг друга: накладываться, соприкасаться, иметь общие области, быть вложенными или изолированными.

Полный 20-разрядный физический адрес формируется в сумматоре физического адреса, который образуется как сумма содержимого сегментного регистра, сдвинутого влево на 4 двоичных разряда и дополненного справа кодом 0000, и адреса смещения в сегменте

Физический адрес будет вычисляться по следующей формуле:

ФА = [xS]16 *1016 +[Асм],

где ФА-физический адрес;

                   [xS] – содержимое одного из сегментного регистра;

                   [Асм] – адрес смещения данных в текущем сегменте.

В каждый данный момент времени МП доступны только четыре сегмента памяти, базовые адреса которых (вернее 16 старших значащих разрядов которых ХХХХh,) хранятся в сегментных регистрах. Эти сегменты называются текущими: текущий сегмент команд (адрес сегмента в регистре CS), текущий сегмент данных (адрес в регистре DS), текущий сегмент стека (адрес в регистре SS) и текущий экстра сегмент (адрес в регистре ES).

Расположение сегмента в памяти задается 20-разрядным адресом сегмента (базовым адресом), младшая шестнадцатиричная цифра которого должна быть равна 0h и базовый адрес сегмента имеет вид XXXX0h, где Х — любая шестнадцатиричная цифра. Общее количество сегментов не может быть больше 216  и их адреса всегда кратные 24=16.

Так как в каждый момент доступны четыре текущих регистра сегмента, то должно бить оговорено соответствие между источником адреса и типом сегмента. По умолчанию приняты следующие назначения сегментных регистров. Если адрес извлекается из регистра адреса команд IP (при выборке команд из памяти), то он суммируется с содержимым регистра CS. Если происходит обращение к стеку, то суммируется содержимое

Пример вычисления физического адреса будет иметь следующий порядок:

[СS]=0F10h;    [IP]=0010h;

Начало сегмента определяется как Асегм=[СS]* 10h=0F100h;

ФА = Асегм+ [Асм]= 0F100h+0010h=0F110h

Похожие материалы

Информация о работе