Иллюстрированный самоучитель по Assembler


486+ CMPXCHG Сравнение и обмен


Команда cmpxchg выполняет в одной операции сравнение и обмен операндов. Команда требует два параметра и неявным образом использует третий операнд - регистр ЕАХ. Первый операнд (приемник) должен находиться в 16- или 32-битовой ячейке памяти, второй операнд (источник) - в регистре общего назначения такого же размера. Команда выполняет сравнение операнда-приемника с содержимым неявного операнда - регистра ЕАХ. Если сравниваемые значения совпадают, операнд-приемник замещается операндом-источником (т.е. содержимое регистра записывается в память). Если сравниваемые значения не совпадают, содержимое памяти (приемник) поступает в регистр ЕАХ (рис. П1). Команда воздействует на флаги OF, SF, ZF, AF, PF и CF.

Рис.П1. Действие команды cmpxchg

Пример 1


; В полях данных

mem dw 135

; В программном сегменте

mov AX,135

mov BX,60

cmpxchg mem,BX ;mem=AX. Регистр ® память ;

mem=60, BX=60, АХ=135

Пример 2


; В полях данных

mem dw 135

;В программном сегменте

mov AX,148

mov BX,60

cmpxchg mem,BX ;mem<>AX. Память ® АХ

;mem=135, BX=60, AX=148


 

Pentium+ CMPXCHG8B Сравнение и обмен 8 байтов


Команда cmpxchgSb выполняет в одной операции сравнение и обмен 8-байтовых операндов. Команда требует один параметр и неявным образом использует еще два операнда - пары регистров EDX:EAX и ЕСХ:ЕВХ. В качестве явного операнда команды (приемника) может выступать только 64-битная (8-байтовая) ячейка памяти. Команда выполняет сравнение операнда-приемника в памяти с содержимым EDX:EAX. Если сравниваемые значения совпадают, то операнд-приемник в памяти замещается 64-битным значением ЕСХ:ЕВХ. Если сравниваемые значения не совпадают, содержимое памяти поступает в пару регистров EDXrEAX, замещая один из сравниваемых операндов (рис. П2). Команда воздействует на флаг ZF.

Рис. П2. Действие команды cmpxchg8b


Пример 1


; В полях данных

mem dq 1122334455667788h

;В программном сегменте

mov ЕСХ,9

mov ЕВХ,5

mov EDX,11223344h

mov EAX,55667788h

cmpxchgSb mem ;mem=EDX:EAX. ECX:EBX ® mem ;




Начало  Назад  Вперед



Книжный магазин