Назначение: сравнение и обмен значений между источником и приемником.
Синтаксис
Алгоритм работы:
выполнить сравнение элементов источник и приемник;
если источник и приемник не равны, то:
установить zf=0;
переслать содержимое операнда приемник в источник (регистр al/ax/eax).
если источник и приемник равны, то:
установить zf=1;
переслать содержимое операнда источник (регистр al/ax/eax) по месту операнда приемник.
Состояние флагов после выполнения команды:
OF
SF
ZF
AF
PF
CF
r
r
r
r
r
r
Применение:
Команды сравнивают два операнда. Один из сравниваемых операндов находится в аккумуляторе (регистре al/ax/eax), другой может находиться в памяти или регистре общего назначения. Если значения равны, то производится замена содержимого операнда приемник содержимым источника, находящимся в регистре-аккумуляторе. Если значения не равны, то производится замена содержимого операнда источника находящимся в регистре-аккумуляторе содержимым операнда назначения. Определить тот факт, была ли произведена смена значения в аккумуляторе (то есть были ли не равны сравниваемые операнды), можно по значению флага zf.
.486 mov ax,114eh mov bx,8e70hcmpxchg bx,ax jz m1 ;переход, если zf=1, то есть операнды равны ;и ax не изменился... ;действия, если операнды не равныm1: