Команда обмена операндами - XCHG
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Команда обмена 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

Команды пересылки данных

Пересылка данных без преобразования

Мнемокод

Описание команд

Флаги, пояснения, примеры.

OF

DF

IF

TF

SF

ZF

AF

PF

CF

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.