logo

Главная Система команд x86 Базовая система команд CPU CMPXCHG

Система команд x86

Программирование - Архитектура и система команд микропроцессоров x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

CMPXCHG

Сравнить и обменять

Влияние команды на флаги и форматы команды:

OF

DF

IF

TF

SF

ZF

AF

PF

CF

*

     

*

*

*

*

*

 

Код

Команда

Описание

Проц.

Пример

0F B0 /r

CMPXCHG r/m8,r8

Сравнить AL и r/m8, если равны, то установить ZF и загрузить r8 в r/m8, иначе очистить ZF и загрузить r/m8 в AL

Intel486

cmpxchg al,dh

0F B1 /r

CMPXCHG r/m16,r16

Сравнить AX и r/m16, если равны, то установить ZF и загрузить r16 в r/m16, иначе очистить ZF и загрузить r/m16 в AX

Intel486

cmpxchg ax,dx

0F B1 /r

CMPXCHG r/m32,r32

Сравнить EAX и r/m32, если равны, то установить ZF и загрузить r32 в r/m32, иначе очистить ZF и загрузить r/m32 в EAX

Intel486

cmpxchg ecx,edi

Описание:

Команда CMPXHG сравнивает аккумулятор (регистр AL, AX или EAX) с операндом-назначением. В случае их равенства операнд-источник загружается в операнд-назначение, иначе операнд-назначение загружается в аккумулятор.

Эта команда может быть использована с префиксом LOCK. Для упрощения интерфейса с шиной процессора операнд-назначение принимает цикл записи, не обращая внимания на результат сравнения. Операнд-назначение записывается обратно, если сравнение неудачно, и операнд-источник записывается в операнд-назначение в противном случае. (Процессор никогда не производит блокировки чтения без блокировки записи.)

Операция:

IF (Аккумулятор = DEST) (* Аккумулятор это AL, AX или EAX *)

THEN

   ZF = 1;

   DEST = SRC;

ELSE

   ZF = 0;

   Аккумулятор = DEST;

FI;

Особые ситуации защищенного режима:

#GP(0), если результат находится в сегменте, запрещенном для записи, если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS, GS или нулевой селектор.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#PF(Код ошибки), страничная ошибка.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3.

Особые ситуации режима реальной адресации:

#GP, если любая часть операнда находится вне пространства эффективных адресов в сегментах CS, DS, ES, FS или GS.
#SS, если любая часть операнда находится вне пространства эффективных адресов в сегменте SS.

Особые ситуации режима V86:

Такие же, как и в режиме реальной адресации.
#PF(Код ошибки), страничная ошибка.
#AC(0) при невыровненной ссылке в память.


Входит в группу команд: Базовая система команд CPU




Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Top.Mail.Ru       Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники