Команда обмена XCHG (exchange - обменять) меняет между собой значения двух регистров или регистра и ячейки памяти. Операнды должны иметь одинаковый тип данных (байт−байт, слово−слово и т.д.). Несколько примеров: XCHG АХ,ВХ; Обменять значения двух словных регистров.
XCHG AL,B; Обменять значения двух байтовых регистров.
XCHG WORD_MEM,DX; Поменять значения ячейки памяти и регистра.
XCHG DL,BYTE_ MEM; Поменять значения регистра и ячейки памяти.
Команды процессоров Intel 8086 – Intel 80386
Наиболее распространенные непривилегированные команды этих процессоров перечислены в таблице 3.6. Команды сгруппированы по выполняемым функциям:
1. Команды пересылки данных осуществляют обмен информацией между регистрами, ячейками памяти и портами ввода–вывода.
2. Арифметические команды выполняют арифметические операции над двоичными или двоично–десятичными числами.
3. Команды манипулирования битами выполняют арифметические и логические сдвиги, циклические сдвиги, логические операции над регистрами и ячейками памяти.
4. Команды обработки строк данных перемещают, сравнивают и сканируют строки данных.
5. Команды управления процессором устанавливают и сбрасывают флаги состояний, меняют режимы функционирования процессора.
6. Команды передачи управления управляют последовательностью выполнения команд в программе. К ним относятся команды условной и безусловной передачи управления, а также команды вызова процедур и возврата из них.
7. Команды прерывания отвлекают процессор на обработку аппаратных или программных прерываний.
В таблице приведены мнемокоды команды. Для большинства команд, описаны функции команды с кратким алгоритмом выполнения. Он в сокращенной форме описывает ход исполнения команды, а также место нахождение приемника и иточника. Если команда изменяет регистр флагов, то указано состояние регистра флагов после исполнения команды.
Для понимания функционирования алгоритма, приведен пример использования команды. Например для команд пересылки MOV пр,ист, он дан в следующем виде: Пр: = ист. R / M, R / М / IM. Эту запись необходимо понимать так: приемнику присваивается содержимое источника. Приемником может быть регистр или ячейка памяти, а источником – регистр, ячейка памяти или непосредственное значение. Причем пересылки можно выполнять только из регистра в ячейку памяти или из ячейки памяти в регистр. Необходимо помнить, что пересылки типа «память – память» запрещены, также как и пересылки непосредственных данных в сегментные регистры. Данные сначала помещаются из памяти в один из регистров процессора, а затем из регистра пересылаются в ячейку памяти. В таблице 3.5 поясняются аббревиатуры и сокращения, используемые в описании алгоритма команд.
Таблица 3.5 − Пояснения используемых аббревиатур и сокращений
Сокращения, аббревиатура | Значение |
Пр. | Приемник операнда |
Ист. | Источник операнда |
Label | Метка команды |
R/M | Операндом является содержимое регистра /или данных из памяти |
Im | Операндом является 8, 16 или 32- битовое непосредственное значение или символьное имя |
Пр.:= ист. | Присвоить значение, т.е. переслать содержимое источника в приемник |
SS: [SP] | Адрес операнда определяется суммой содержимого регистров SS и SP |
AL 7 | 7- й разряд регистра AL |
* | Указанный разряд регистра флагов принимает значение 0 или 1. |
-- | Команда не влияет на флаг. |
0 или 1 | Новое состояние флага. |
? | Состояние флага не определено. |
Таблица 3.6 Система команд процессоров Intel 8086 – Intel 80386
Команды пересылки данных
Пересылка данных без преобразования
Мнемокод
Описание команд
Флаги, пояснения, примеры.
DF
IF
TF
SF
ZF
AF
PF
MOV пр,ист
Пересылка операнда
Пр: = ист.
R / M, R / М / IM
--
--
--
--
--
--
--
Mov ax , bx; Копирует содержимое
ВХ в АХ.
Mov ax , tab; Копирует содержимое
ячейки Tab в АХ.
Mov в l ,78; Переслать const в регистр
MOVSB
MOVSW
MOVSD
Пересылка цепочки
байт, слов, двойных слов с автомодифи-кацией индексов.
Пр: = ист. ES:[(E)DI]:=DS:(E)SI]
--
--
--
--
--
--
--
--
Cld; Направление вперед.
Lds si , tab 1; Указали источник.
Les di , tab 2; Указали приемник.
Mov cx ,5; Счетчик повторения
Rep Movsw; Копирует 5 слов
PUSH ист.
Запись операнда в стек SS: [SP]: = ист.
Ист – M/ R/ IM
--
--
--
--
--
--
--
--
Push ax; Заносит содержимое АХ
в стек по адресу [ss:sp]
PUSHA
Запись в стек значений регистров
AX, CX, DX, BX,
SP, BP, SI, DI.
--
--
--
--
--
--
--
--
Pusha;Сохраняет в стеке по адресу SS:[SP] содержимое всех
16- разрядных РОН.
PUSHAD
Запись в стек значений регистров
EAX, ECX, EDX, EBX ESP, EBP, ESI, EDI.
--
--
--
--
--
--
--
Pushad; Сохраняет в стеке по
адресу SS: [SP] содержимое
32- разрядных регистров
общего назначения.
POP пр.
Восстановить операнд из стека
Пр:= SS: [SP];
M/ R: = SS: [SP]
--
--
--
--
--
--
--
--
Р op ax; Извлекает из вершины
стэка слово и записывает
его в регистр АХ
Pop mem; или ячейку памяти.
Продолжение таблицы 3.6
Мнемокод | Описание команд | Флаги, пояснения, примеры. | |||||||||||||||||||
OF | DF | IF | TF | SF | ZF | AF | PF | CF | |||||||||||||
POPA | Восстановить из стека регистры DI, SI, BP, SP, BX, DX, CX, AX. | -- | -- | -- | -- | -- | -- | -- | -- | -- | |||||||||||
Popa; Извлекает 8 слов из стека, помещает их в указанные регистры и увеличивает SP на 16. | |||||||||||||||||||||
POPAD | Загрузить из стека регистры EDI, ESI, EBP, ESP, EBX, EDX, ECX, EAX. | -- | -- | -- | -- | -- | -- | -- | -- | -- | |||||||||||
Popad; Копирует 8 двойных слов из стека, в регистры и увеличивает регистр SP на 32. | |||||||||||||||||||||
XCHG пр, ист | Обмен Пр< = > ист. Приемник - регистр , источник- регистр или ячейка памяти. | -- | -- | -- | -- | -- | -- | -- | -- | -- | |||||||||||
Xchg ax , bx; Взаимный обмен между регистрами Xchg ax , mem или памятью и регистром. | |||||||||||||||||||||
XLAT
| Преобразование кодов. AL:= DS: [BX + AL] | -- | -- | -- | -- | -- | -- | -- | -- | -- | |||||||||||
Применяется для трансляции таблиц. Пример использования команды XLAT приведен в разделе 5.4. | |||||||||||||||||||||
Пересылка данных с преобразованием | |||||||||||||||||||||
MOVZX пр,ист. | Дата: 2018-11-18, просмотров: 868. |