Урок 46. Загрузка исполнительного адреса
Команда загрузки действительного адреса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, которая могла бы выполнятьту же функцию, нет. У
— — — ассемблера здесь нет способа определениянепосредственного
— — — значения, так как адрес неизвестен вовремя ассемблирования.