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

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

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

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

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

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

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

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

 

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

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

 

MOVBX,OFFSETEXWORD

LEA BX, EXWORD

 

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

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

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

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

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

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

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

 

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

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

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

 

LEA BX, 10[DI]

 

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

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

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

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

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

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

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


 

Mail.ru