Xchg <Операнд1>, <операнд2>.
Mov – это основная команда пересылки данных. В ней допустимо большинство из возможных сочетаний операндов:
Mov ax, table ; пересылка из памяти в регистр
Mov table, ax ; и наоборот
Mov ds, ax ; пересылка между 16-битовыми регистрами
Mov bl, al ; пересылка между 8-битовыми регистрами
Mov cl,-30 ; пересылка константы в регистр
Mov table, word ptr 25h ; пересылка константы в память
Если в команде пересылки одним из операндов является регистр, то ассемблер пересылает столько байтов, каков размер регистра. При отсутствии в команде регистра ассемблер не знает, одну, двух или четырехбайтовую константу необходимо пересылать в память. В таком случае подсказкой для ассемблера должны быть модификаторы BYTE PTR (пересылка одного байта), WORD PTR (пересылка слова – двух байтов), DWORD PTR (пересылка двойного слова – четырех байтов).
В команде Mov исключаются следующие сочетания операндов:
— сегментный регистр-память. Нельзя загрузить в сегментный регистр значение непосредственно из памяти. Поэтому для такой загрузки используют обычно 2 команды пересылки – через регистр общего назначения или через стек;
— ячейка памяти-ячейка памяти. Нельзя осуществлять непосредственную пересылку данных из одной ячейки памяти в другую.
— сегментный регистр-сегментный регистр. Нельзя пересылать содержимое одного сегментного регистра в другой сегментный регистр, однако при необходимости такой пересылки поступают так же, как и в предыдущих случаях: пересылку осуществляют через регистр общего назначения;
— нельзя использовать сегментный регистр CS в качестве операнда назначения (приемника).
Команда Xchg (exchange) меняет между собой значения двух регистров общего назначения или регистра ОН и ячейки памяти. Необходимое требование к операндам – чтобы они имели один тип. Например:
Xchg AX, BX ; обменять значения двух регистров (слова
Xchg AL, BH ; или байты)
Xchg WORD1, DX ; обменять значения регистра и
Xchg DL, BYTE1 ; ячейки памяти.