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


База + индекс + смещение


    Программа  может  также  комбинировать  вычисляемый  адрес    базы  с
    вычисляемым  индексом.  Как  показано  на  Фиг.3.2, программа может
    использовать режим адресации с  двумя разными адресными регистрами.
    Для формирования исполнительного адреса  в команде могут сочетаться
    любой из  регистров базы (BX и  BP) с любым из  индексных регистров
    (SI  и  DI).  В  программе      может      быть  также  указано  смещение,
    добавляемое  к  сумме  значений  этих  двух  регистров. Этот способ
    адресации  обладает  максимальной     гибкостью,  так  как  позволяет
    вычислять во  время выполнения программы и  адрес базы, и индексное
    значение.  Такая возможность  не  всегда  требуется, но  доступна в
    любой момент.
      Пример с классным журналом демонстрирует случай, когда програм-
    ма может вычислять и адрес базы,  и индекс вектора. Для того, чтобы
    определить отметку  I-го ученика за  J-ю контрольную, потребовалось
    бы установить адрес базы на J-й  вектор и индексировать его по I-му
    элементу.
      На   рис.3.3   приведена   сводка   восьми  различных  способов
    адресации,    возможных  в  микропроцессоре  8088.  В  команде  могут
    использоваться любые из четырех  адресных регистров и смещение либо
    комбинация    базисного регистра  и индексного  вместе со  смещением.
    Смысл колонки, обозначенной R/M, будет объяснен позже.
 
      R/M       Адрес операнда
      -----------------------------
      000   [BX + SI + СМЕЩЕНИЕ]
      001   [BX + DI + СМЕЩЕНИЕ]
      010   [BP + SI + СМЕЩЕНИЕ]
      011   [BP + DI + СМЕЩЕНИЕ]
      100   [SI + СМЕЩЕНИЕ]
      101   [DI + СМЕЩЕНИЕ]
      110   [BP + СМЕЩЕНИЕ]
      111   [BX + СМЕЩЕНИЕ]
      ----------------------------- Фиг. 3.3 Способы адресации 8088
 
      В наборе команд 8088  поле смещения для адресации оптимизирова-
    но таким образом, чтобы минимизировать кличество треуемых байт. Ко-
    манда может не содержать поле  смещения, когда смещение равно нулю.



- Начало -  - Назад -  - Вперед -