Загрузка исполнительного адреса

    Команда загрузки действительного адреса LEA очень похожа на команду

    MOV.  Но вместо пересылки данных из ячейки памяти в регистр команда

    LEA загружает в регистр адрес двнных.  Так как набор команд

    микропроцессора 8088 разрешает иметь в команде только один адрес

    памяти, в качестве приемника результата всегда указывается регистр.

    Команда LEA может ссылаться на операнд источника с помощью любого

    типа адресации, который можно указать байтом mod=r/m.

 

      Во многих случаях команда LEA идентична команде MOV с

    непосредственным операндом. Команды

 

      MOV   BX,             OFFSET            EXWORD

      LEA BX, EXWORD

 

      делают одно и то же. Первая команда - это непосредственная

    пересылка, которая использует смещение переменной EXWORD. Оператор

    OFFSET говорит ассемблеру о том, что в регистр BX надо загрузить

    смещение адресного значения (все адресные значения имеют две части

    - сегмент и смещение) переменной EXWORD. Команда LEA вычисляет

    действительный адрес переменной EXWORD и помещает его в регистр BX.

    В этом случае команды выполняют одинаковые действия.

 

      Но если бы программа загружала в регистр BX адрес десятого

    байта массива, на который указывает регистр DI, команда LEA

    выглядела бы следующим образом

 

      LEA BX, 10[DI]

 

      Микропроцессор выполнил бы вычисление адреса, используя

    информацию из байта mod=r/m в точности, как в случае команды MOV.

    Затем он поместил бы вычисленное смещение, а не данные, по этому

    адресу в регистр BX. Аналогичной команде с непосредственным

    операндом MOV, которая могла бы выполнять ту же функцию, нет. У

    ассемблера здесь нет способа определения непосредственного

    значения, так как адрес неизвестен во время ассемблирования.