Меню сайта

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

Категория: Программирование на Ассемблере | Дата: 12.02.13

Меню раздела
Блок