Сведения об основных командах пересылки данных были приведены в предыдущей лекции. Сведения о других командах этой группы приведены в таблице 2.
Мнемокод
Формат
Команды общего назначения
MOV
MOV приемник, источник
PUSH
PUSH источник
POP
POP приемник
XCHG
XCHG приемник, источник
XLAT
XLAT таблица_источник
Команды ввода-вывода
IN
IN аккумулятор, порт
OUT
OUT порт аккумулятор
Команды пересылки адреса
LEA
LEA регистр (16), память (16)
LDS
LDS регистр (16), память (32)
LES
LES регистр (16), память (32)
Команды пересылки флагов
LAHF
LAHF
SAHF
SAHF
PUSHF
PUSHF
POPF
POPF
Никакие из этих команд, кроме SAHF и POPF значения флагов не изменяют.
Команды ввода-вывода будем подробнее рассматривать далее.
Относительно команд пересылки адреса следует отметить, что в отличие от MOV они пересылают не значения, а адрес операнда. Эту операцию выполняет LEA. По этой команде в приемник, каковым является 16-разрядный регистр, переносится исполнительный (эффективный) адрес данных (иначе говоря, в регистр загружается смещение адреса памяти относительно начала сегмента данных).
Для загрузки полного адреса ячейки памяти существуют команды LDS и LES. При их выполнении смещение искомого адреса пересылается в указанный командой 16-разрядный РОН, а сегментная составляющая адреса (которая потом смещается на 4 разряда при определении физического адреса) помещается в 1-ой команде в регистр данных DS, а во 2-ой команде – в дополнительный регистр данных ES.
Команды PUSH и POP помещают или извлекают указанные в них данные на вершину стека (более подробно их будем рассматривать на конкретных примерах программ).
Вопросы для проверки усвоения команд пересылки данных.
1. Заполните таблицу, считая все команды независимыми. Переменная BYTE определена как DB 05 и описана первой в сегменте данных. Отметьте некорректные инструкции.
Команда
Содержимое операнда до выполнения команды
Результат выполнения
MOV CX,25H
CX=0000H
CX=
MOV CL,0
CX=FFFFH
CX=
MOV AX,BYTE
AX=1234H
AX=
MOV DL,BYTE
DX=0120H
DX=
LEA BX,BYTE
BX=3456H
BX=
XCHG AH,AL
AX=1234Y
AX=
XCHG CX,CX
CX=1234H
CX=
2. Чем существенно различаются в исполнении 2 инструкции, записанные одной строкой (обратитесь к теме “Режимы адресации”)? Какой смысл имеют в этих инструкциях квадратные скобки?
A) MOV DX,AC24H MOV DX,[AC24H]
B) MOV BX,WORDA MOV BX,[WORDA]
C) MOV BX,OFFSET WORDA LEA BX,WORDA
3. Укажите, как одной командой поменять содержимое слова WORD и регистра АХ.
4. Укажите команду, загружающую в регистр SI смещение элемента данных с именем RATE.
5. В сегменте данных описан вектор TABL DB 12,15,16,10,8,2,5,0. Напишите команды занесения значения четвертого байта (значение 10) в регистр AL
а) с использованием прямой адресации;
б) с использованием косвенной адресации;
в) с использованием прямой адресации с индексированием.
6. Используя описание вектора из пункта 5, заполните пустые места в таблице.