На главную Назад
Добро пожаловать, уважаемый посетитель!

Все,что до сих пор говорилось об адресации, относится к генерации

так называемого смещения (offset) адреса. Смещение имеет 16-битовое

значение. 8088 сегментирует память таким образом, что можно адресо-

ваться к памяти большей чем 64K. В этом пункте бует показанспособ

сегментауии 8088.

Поскольку размер слова в микропроцессоре 8088 равен 16 бит, для

него естественногенерировать адреса в16 бит длиной.Это делает

доступными дляпрямой адрессации 2**16элементов или 65535 байт

памяти.Однакодлянекоторых программ64Kячеекпамяти

недостаточно.ПоэтомуфирмаINTELсконструировала8088для

адресации 2**20 байт или одного мегабайта памяти.

Дляполучения 20-битовой адресации требуется еще четыре бита к

имеющимся 16-ти. Добавочные 4 бита адресной информацииберутсяиз

сегментных регистров. Сегментные регистры сами имеют размер 16 бит.

8088комбинирует16-битовыйадрессмещения и 16-битовый регистр

сегмета как показано на Фиг.3.5. Процессор дополняет сегментный ре-

гистр 4-мя нулевыми битами, что составляет вместе полное 20-битовое

значение.К расширенному значению сегмента процессор добавляет ад-

рес сммещения, определяемый через вычисление адреса. 20-битовый ре-

зультат является указателем на исполнительный адрес.

 

ЪДДДДДДДДДї

і Сегмент і0000

АДДДДДДДДДЩ

ЪДДДДДДДДДДДї

+і Смещениеі

АДДДДДДДДДДДЩ

----------------

ЪДДДДДДДДДДДДДДДДї

і20-битовый адресі

АДДДДДДДДДДДДДДДДЩ

 

Фиг.3.5 Вычисление адреса с сегментом и смещением

 

Каждая обращающаяся к памятикоманда может сформировать только

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

этотадрес внутриопределенного сегмента.Фиг. 3.6 иллюстриирует

такой способ применения сегментации.

 

ЕДДДДДДДДДДДДДДДДДДґ ДДДДДВДДДДСегментный регистр

іііі

ііісмещение

іііі

СегментіГДДДДДДДДДДДДДДДДДДЕ ДДДДДБДДДДАдресуемая область

64КГДДДДДДДДДДДДДДДДДДґ

ііі

ііі

ііі

ЕДДДДДДДДДДДДДДДДДДґ

іі

Фиг.3.6 Сегментация.

 

Начальный адрессегмента всегда имеетнули в младшихчетырех

битах.Адрес сэтимсвойствомимеет каждаяшестнадцатая ячейка

памяти. Конструируя расположение данныхв своей программе помните,

что сегмент всегда долженприходиться на такую 16-битовую границу.

Эти границы называются также границами параграфов.


 

Mail.ru