
Xchg al,sema ; Обмен байтами память - регистр
Xchg al,bl ; Обмен байтами регистр - регистр
Xchg ax,cx ; Обмен словами регистр - аккумулятор
Отметим следующее:
в команде XCHG нельзя указывать сегментные регистры,
команда XCHG AX, AX используется как команда пустой операции NOP.
Команда XLAT. Однобайтная команда преобразования XLAT с кодом операции D7 заменяет содержимое аккумулятора AL на байт из 256-байтной таблицы, начальный адрес которой находится в регистре BX. Другими словами, содержимое AL используется как индекс таблицы, адресуемой регистром BX. Алгоритм выполнения команды XLAT состоит из двух шагов:
прибавить содержимое регистра AL к содержимому регистра BX;
использовать результат как смещение в сегменте данных (относительно DS) и поместить адресуемый байт из памяти в регистр AL.
Команда XLAT обычно применяется для быстрого преобразования символов из одного символьного кода в другой. Время ее выполнения составляет 11 тактов синхронизации.
Пример :(AL)=47 XLAT (AL)=E1
(BX)=1200
(DS)=F000
([F1247])=E1
Изучить выполнение команды MOV dst, src с косвенной адресацией, имеющей форматы MOV mem/reg1, MOV mem/reg2; MOV mem/reg, data:
MOV AX, [DI]
MOV [SI], BL
INT3
Перейти в поле 2, нажав клавишу F7. Ввести команды D 100, A и выше указанную программу. Выйти из режима ассемблирования, нажав одновременно две клавиши ctrl+enter. В соответствующих регистрах и ячейках памяти записать указанные числа. Выполнить программу в пошаговом режиме, многократно нажимая клавишу F2. Изучить выполнение команды MOV dst, src с базовой адресацией, имеющей форматы MOV mem/reg1, mem/reg2; MOV mem/reg, data:
MOV AX, [BP+10]
MOV [BX], DL
INT3
Перейти в поле 2, нажав клавишу F7. Ввести команды D 100, A и выше указанную программу. Выйти из режима ассемблирования, нажав одновременно две клавиши ctrl+enter. В соответствующих регистрах и ячейках памяти записать указанные числа. Выполнить программу в пошаговом режиме, многократно нажимая клавишу F2.
4.6. Изучить выполнение команды MOV dst, src с индексной адресацией, имеющей форматы MOV mem/reg1, mem/reg2; MOV mem/reg, data:
MOV [SI+5], AX
MOV DX, [DI+10]
MOV [SI], 34
INT3
Перейти в поле 2, нажав клавишу F7. Ввести команды D 100, A и выше указанную программу. Выйти из режима ассемблирования, нажав одновременно две клавиши ctrl+enter. В соответствующих регистрах и ячейках памяти записать указанные числа. Выполнить программу в пошаговом режиме, многократно нажимая клавишу F2.
4.7. Изучить выполнение команды MOV dst, src с базовой индексной адресацией, имеющей форматы MOV mem/reg1, mem/reg2; MOV mem/reg, data:
MOV AX, [BP+SI]
MOV [BX+DI], CX
MOV [BX+SI+4], 34
INT3
Перейти в поле 2, нажав клавишу F7. Ввести команды D 100, A и выше указанную программу. Выйти из режима ассемблирования, нажав одновременно две клавиши ctrl+enter. В соответствующих регистрах и ячейках памяти записать указанные числа. Выполнить программу в пошаговом режиме, многократно нажимая клавишу F2.
Домашнее задание
Составить фрагмент программы в соответствии с вариантом домашнего задания и оформить его в виде таблицы 1.
Содержание отчета:
Название работы.
Цель работы.
Фрагмент программы в таблице 1.
Таблица 2 с результатами работы.
Фрагмент программы домашнего задания, оформленный в виде таблицы 1 с результатами каждого шага, записанными в графе «комментарии».
Вывод о проделанной работе.
Контрольные вопросы:
Назначение команды MOV.
Назначение команды XLAT, LEA.
Назначение команды XCHG.
Назначение команд SAHF, LAHF.
Чем отличаются команды ADD и ADC?
Где находится второй множитель в командах умножения?
В каких регистрах находится результат после умножения?
В каких регистрах находится результат после деления?
Литература
Майко Г.В. «Ассемблер для IBM PC»: - М.: «Бизнес-Информ», «Сирин», 1999г. – 212с.
Юров В., Хорошенко С. «Аssembler»: учебный курс – СПб: Питер Ком, 1999г. – 672 с.