Assembler для начинающих


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



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


    Все,  что до сих пор говорилось об адресации, относится к генерации
    так называемого смещения (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-битовую границу.
    Эти границы называются также границами параграфов.




Содержание раздела