Билет 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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.