Физическая адресация

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

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

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

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

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

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

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

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

    памяти.   Однако   для   некоторых    программ   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-битовую границу.

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