Команда xchg пересылает значение первого операнда во второй, а второго - в первый. В качестве любого операнда можно указывать регистр (кроме сегментного) или ячейку памяти, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака. Команда не воздействует на флаги процессора.

Пример 1


mov AX,OFF01h
mov SI,1000h
xchg AX,SI ;AX=01000h, SI=FF01h

Пример 2


;В полях данных:
mem dw 0F0F0h
;В программном сегменте
mov CX,1256h
xchg CX,mem ;CX=F0F0h, mem=1256h

Пример 3


mov AX,6031h
xchg AH,AL ;AX=3160h

 Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров.

Пример


xchg ESI,EDI ;ESI и EDI обмениваются содержимым