logo

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

Система команд 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

CMOVcc

Условная пересылка

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

OF

DF

IF

TF

SF

ZF

AF

PF

CF

                 

 

Код

Команда

Описание

Проц.

Пример

0F 47 /r

CMOVA r16, r/m16

Переслать данные из r/m16 в r16, если выше (CF=0 и ZF=0)

Pentium Pro

cmova dx,[di]

0F 47 /r

CMOVA r32, r/m32

Переслать данные из r/m32 в r32, если выше (CF=0 и ZF=0)

Pentium Pro

cmova eax,ecx

0F 43 /r

CMOVAE r16, r/m16

Переслать данные из r/m16 в r16, если выше или равно (CF=0)

Pentium Pro

cmovae bx,ax

0F 43 /r

CMOVAE r32, r/m32

Переслать данные из r/m32 в r32, если выше или равно (CF=0)

Pentium Pro

cmovae edx,[ebx]

0F 42 /r

CMOVB r16, r/m16

Переслать данные из r/m16 в r16, если ниже (CF=1)

Pentium Pro

cmovb ax,[sp]

0F 42 /r

CMOVB r32, r/m32

Переслать данные из r/m32 в r32, если ниже (CF=1)

Pentium Pro

cmovb edi,[esi]

0F 46 /r

CMOVBE r16, r/m16

Переслать данные из r/m16 в r16, если ниже или равно (CF=1 или ZF=1)

Pentium Pro

cmovbe si,bx

0F 46 /r

CMOVBE r32, r/m32

Переслать данные из r/m32 в r32, если ниже или равно (CF=1 или ZF=1)

Pentium Pro

cmovbe eax,[esp]

0F 42 /r

CMOVC r16, r/m16

Переслать данные из r/m16 в r16, если перенос (CF=1)

Pentium Pro

comc ax,[bx]

0F 42 /r

CMOVC r32, r/m32

Переслать данные из r/m32 в r32, если перенос (CF=1)

Pentium Pro

cmovc esi,eax

0F 44 /r

CMOVE r16, r/m16

Переслать данные из r/m16 в r16, если равно (ZF=1)

Pentium Pro

cmove dx,si

0F 44 /r

CMOVE r32, r/m32

Переслать данные из r/m32 в r32, если равно (ZF=1)

Pentium Pro

cmove edx,[eax]

0F 4F /r

CMOVG r16, r/m16

Переслать данные из r/m16 в r16, если больше (ZF=0 и SF=OF)

Pentium Pro

cmovg cx,[bx]

0F 4F /r

CMOVG r32, r/m32

Переслать данные из r/m32 в r32, если больше (ZF=0 и SF=OF)

Pentium Pro

cmovg ecx,edx

0F 4D /r

CMOVGE r16, r/m16

Переслать данные из r/m16 в r16, если больше или равно (SF=OF)

Pentium Pro

cmovge dx,di

0F 4D /r

CMOVGE r32, r/m32

Переслать данные из r/m32 в r32, если больше или равно (SF=OF)

Pentium Pro

cmovge ebx, edi

0F 4C /r

CMOVL r16, r/m16

Переслать данные из r/m16 в r16, если меньше (SF<>OF)

Pentium Pro

cmovl di, [si+bx]

0F 4C /r

CMOVL r32, r/m32

Переслать данные из r/m32 в r32, если меньше (SF<>OF)

Pentium Pro

cmovl esi, edi

0F 4E /r

CMOVLE r16, r/m16

Переслать данные из r/m16 в r16, если меньше или равно (ZF=1 или SF<>OF)

Pentium Pro

cmovle di,bx

0F 4E /r

CMOVLE r32, r/m32

Переслать данные из r/m32 в r32, если меньше или равно (ZF=1 или SF<>OF)

Pentium Pro

cmovle edi,[ebx]

0F 46 /r

CMOVNA r16, r/m16

Переслать данные из r/m16 в r16, если не выше (CF=1 или ZF=1)

Pentium Pro

cmovna ax,si

0F 46 /r

CMOVNA r32, r/m32

Переслать данные из r/m32 в r32, если не выше (CF=1 или ZF=1)

Pentium Pro

cmovna eax,[esi]

0F 42 /r

CMOVNAE r16, r/m16

Переслать данные из r/m16 в r16, если не выше или равно (CF=1)

Pentium Pro

cmovnae ax,[bx]

0F 42 /r

CMOVNAE r32, r/m32

Переслать данные из r/m32 в r32, если не выше или равно (CF=1)

Pentium Pro

cmovnae edi,ebx

0F 43 /r

CMOVNB r16, r/m16

Переслать данные из r/m16 в r16, если не ниже (CF=0)

Pentium Pro

cmovnb di,[si+1]

0F 43 /r

CMOVNB r32, r/m32

Переслать данные из r/m32 в r32, если не ниже (CF=0)

Pentium Pro

cmovnb edi,[ecx]

0F 47 /r

CMOVNBE r16, r/m16

Переслать данные из r/m16 в r16, если не ниже или равно (CF=0 и ZF=0)

Pentium Pro

cmovnbe cx,ax

0F 47 /r

CMOVNBE r32, r/m32

Переслать данные из r/m32 в r32, если не ниже или равно (CF=0 и ZF=0)

Pentium Pro

cmovnbe eax, [esi]

0F 43 /r

CMOVNC r16, r/m16

Переслать данные из r/m16 в r16, если нет переноса (CF=0)

Pentium Pro

cmovnc di,[sp+5]

0F 43 /r

CMOVNC r32, r/m32

Переслать данные из r/m32 в r32, если нет переноса (CF=0)

Pentium Pro

cmovnc edi,ebx

0F 45 /r

CMOVNE r16, r/m16

Переслать данные из r/m16 в r16, если не равно (ZF=0)

Pentium Pro

cmovne cx,[si]

0F 45 /r

CMOVNE r32, r/m32

Переслать данные из r/m32 в r32, если не равно (ZF=0)

Pentium Pro

cmovne ebx,ecx

0F 4E /r

CMOVNG r16, r/m16

Переслать данные из r/m16 в r16, если не больше (ZF=1 или SF<>OF)

Pentium Pro

cmovng ax,[bp+3]

0F 4E /r

CMOVNG r32, r/m32

Переслать данные из r/m32 в r32, если не больше (ZF=1 или SF<>OF)

Pentium Pro

cmovng ecx,[eax]

0F 4C /r

CMOVNGE r16, r/m16

Переслать данные из r/m16 в r16, если не больше или равно (SF<>OF)

Pentium Pro

cmovnge si,di

0F 4C /r

CMOVNGE r32, r/m32

Переслать данные из r/m32 в r32, если не больше или равно (SF<>OF)

Pentium Pro

cmovnge edi,ecx

0F 4D /r

CMOVNL r16, r/m16

Переслать данные из r/m16 в r16, если не меньше (SF=OF)

Pentium Pro

cmovnl cx,[di]

0F 4D /r

CMOVNL r32, r/m32

Переслать данные из r/m32 в r32, если не меньше (SF=OF)

Pentium Pro

cmovnl cx,[ebp]

0F 4F /r

CMOVNLE r16, r/m16

Переслать данные из r/m16 в r16, если не меньше или равно (ZF=0 и SF=OF)

Pentium Pro

cmovnle bp,ax

0F 4F /r

CMOVNLE r32, r/m32

Переслать данные из r/m32 в r32, если не меньше или равно (ZF=0 и SF=OF)

Pentium Pro

cmovnle esi,ebp

0F 41 /r

CMOVNO r16, r/m16

Переслать данные из r/m16 в r16, если нет переполнения (OF=0)

Pentium Pro

cmovno sp,bp

0F 41 /r

CMOVNO r32, r/m32

Переслать данные из r/m32 в r32, если нет переполнения (OF=0)

Pentium Pro

cmovno esp,[edi]

0F 4B /r

CMOVNP r16, r/m16

Переслать данные из r/m16 в r16, если нет паритета (PF=0)

Pentium Pro

cmovnp ax,sp

0F 4B /r

CMOVNP r32, r/m32

Переслать данные из r/m32 в r32, если нет паритета (PF=0)

Pentium Pro

covnp eax,edi

0F 49 /r

CMOVNS r16, r/m16

Переслать данные из r/m16 в r16, если положительно (SF=0)

Pentium Pro

cmons cx,bp

0F 49 /r

CMOVNS r32, r/m32

Переслать данные из r/m32 в r32, если положительно (SF=0)

Pentium Pro

cmovns edx,edi

0F 45 /r

CMOVNZ r16, r/m16

Переслать данные из r/m16 в r16, если не нуль (ZF=0)

Pentium Pro

cmovnz sp,[bp]

0F 45 /r

CMOVNZ r32, r/m32

Переслать данные из r/m32 в r32, если не нуль (ZF=0)

Pentium Pro

cmovnz ecx,esi

0F 40 /r

CMOVO r16, r/m16

Переслать данные из r/m16 в r16, если переполнение (OF=1)

Pentium Pro

cmovo ax,[bx+si]

0F 40 /r

CMOVO r32, r/m32

Переслать данные из r/m32 в r32, если переполнение (OF=1)

Pentium Pro

cmovo ecx,[esi]

0F 4A /r

CMOVP r16, r/m16

Переслать данные из r/m16 в r16, если паритет (PF=1)

Pentium Pro

cmovp dx,[si]

0F 4A /r

CMOVP r32, r/m32

Переслать данные из r/m32 в r32, если паритет (PF=1)

Pentium Pro

cmovp ecx,eax

0F 4A /r

CMOVPE r16, r/m16

Переслать данные из r/m16 в r16, если четно (PF=1)

Pentium Pro

cmovpe ax,dx

0F 4A /r

CMOVPE r32, r/m32

Переслать данные из r/m32 в r32, если четно (PF=1)

Pentium Pro

cmovpe esp,[edi]

0F 4B /r

CMOVPO r16, r/m16

Переслать данные из r/m16 в r16, если нечетно (PF=0)

Pentium Pro

cmovpo ax,[di]

0F 4B /r

CMOVPO r32, r/m32

Переслать данные из r/m32 в r32, если нечетно (PF=0)

Pentium Pro

cmovpo ecx,eax

0F 48 /r

CMOVS r16, r/m16

Переслать данные из r/m16 в r16, если отрицательно (SF=1)

Pentium Pro

cmovs dx,[bp+di]

0F 48 /r

CMOVS r32, r/m32

Переслать данные из r/m32 в r32, если отрицательно (SF=1)

Pentium Pro

cmovs ecx,[edx]

0F 44 /r

CMOVZ r16, r/m16

Переслать данные из r/m16 в r16, если нуль (ZF=1)

Pentium Pro

cmovz dx,ax

0F 44 /r

CMOVZ r32, r/m32

Переслать данные из r/m32 в r32, если нуль (ZF=1)

Pentium Pro

cmovz eax,ebp

Описание:

Команда CMOVcc осуществляет проверку состояния регистра EFLAFS и производит операцию переноса данных, если соответствующие флаги находятся в состоянии, заданном командой. Если условие (cc) не выполняется, то продолжается исполнение программы с команды следующей за CMOVcc. Команды CMOVcc могут переносить 16- и 32-битные данные из памяти в регистр общего назначения или из одного регистра общего назначения в другой. Перенос 8-битных данных не поддерживается.

Команды CMOVcc поддерживаются не всеми процессорами Pentium Pro, Pentium II … Для определения того, поддерживает ли конкретная модель процессора указанную команду, следует использовать команду CPUID.

Операция:

temp = DEST;

IF condition TRUE

   THEN

      DEST = SRC;

   ELSE

      DEST = temp;

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       Сервер радиолюбителей России - схемы, документация,

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