Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler_LAB_02.docx
Скачиваний:
13
Добавлен:
02.02.2015
Размер:
34.22 Кб
Скачать
      1. Загрузка эффективного адреса

Для выполнения операция с косвенной адресацией необходим адрес ячейки памяти, в которой размещается операнд. Команда загрузки эффективного адреса LEA позволяет получить такой адрес.

Команда LEA очень похожа на команду MOV, и позволяет использовать любые способы адресации ячеек памяти. При этом приемником может быть регистр (16 разрядный), а источником – ячейка памяти. Вместо пересылки данных из ячейки, команда LEA загружает в регистр адрес данных.

Синтаксис команды

LEA Wr, источник

Во многих случаях команда LEA идентична команде MOV с непосредственным операндом. Команды:

MOV BX, OFFSET EXWORD

LEA BX, [EXWORD]

выполняют одно и то же. Первая команда - это непосредственная пересылка, которая использует смещение переменной EXWORD. Оператор OFFSET говорит о том, что в регистр BX надо загрузить смещение адресного значения переменной EXWORD. Команда LEA вычисляет действительный адрес переменной EXWORD и помещает его в регистр BX. В этом случае команды выполняют одинаковые действия. Но если бы программа загружала в регистр BX адрес десятого байта массива, на который указывает регистр DI, команда LEA выглядела бы следующим образом:

LEA BX, [DI+9]

OFFSET нельзя использовать вместе с адресным выражениями косвенной адресации (значения смещений вычисляются на стадии трансляции).

      1. Загрузка указателя

Поскольку механизм адресации микропроцессора 8086 требует определения сегмента и смещения каждой переменной, желательно загрузить всю эту адресную информацию единственной командой. Эту работу выполняют команды LDS и LES, а также LGS и LFS. Синтаксис команды загрузки указателя имеет вид

LDS Wr,[M]

где М – имя ячейки памяти (4 байта), в которой хранится указатель.

Команда

LDS SI , [EXDWORD]

загружает регистровую пару DS:SI значениями сегмента и смещения, содержащимися в переменной EXDWORD. Команда LDS загружает в регистр SI значение смещения, расположенное по адресу EXDWORD, а в регистр DS - значение сегмента, расположенное по адресу EXDWORD+2.

Команды LES, LGS и LFS идентичны LDS, за исключением того, что они загружают регистры ES, GS и FS соответственно.

      1. Пересылка флагов

Набор команд микропроцессора 8086 имеет команды LAHF и SAHF в первую очередь для совместимости с набором команд микропроцессора 8080. Команда LAHF берет 8 младших бит регистра флагов - а эти флаги совпадают с флагами микропроцессора 8080 и засылает их в регистр AH. Команда SAHF действует наоборот, младший байт регистра флагов загружает из регистра AH. Обе команды не имеют операндов.

      1. Перекодировка

Команда перекодировки XLAT преобразует коды в соответствии с таблицей. Таблица объемом 256 байт содержит новые коды символов. Команда XLAT заменяет значение в регистре AL на код, выбираемый из таблицы, на которую указывает регистр BX. Регистр BX вместе с выбранным сегментным регистром определяет точку начала таблицы перекодировки в памяти. Этому адресу таблицы команда прибавляет содержимое регистра AL (значение между 0 и 255). Данные, расположенные по этому адресу, команда XLAT пересылает в регистр AL. Команду XLAT можно использовать при кодировании и декодировании текстовых данных.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]