logo

Главная Система команд x86 Система команд FPU FCOMP
Система команд 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

FCOMP

Сравнить вещественные значения и извлечь одно из стека

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

IS

IA

D

Z

O

U

P

*

*

*

 

 

 

 

 

Код

Команда

Описание

Проц.

Пример

D8 /2

FCOM m32real

Сравнить ST(0) и m32real

8087

fcom dword ptr [bx]

DC /2

FCOM m64real

Сравнить ST(0) и m64real

8087

fcom qword ptr mtmo

D8 D0+i

FCOM ST(i)

Сравнить ST(0) и ST(i)

8087

fcom ST(2)

D8 D1

FCOM

Сравнить ST(0) и ST(1)

8087

fcom

D8 /3

FCOMP m32real

Сравнить ST(0) и m32real, верхний элемент выталкивается из регистрового стека

8087

fcomp dword ptr [bp]

DC /3

FCOMP m64real

Сравнить ST(0) и m64real, верхний элемент выталкивается из регистрового стека

8087

fcomp dword ptr [ecx]

D8 D8+i

FCOMP ST(i)

Сравнить ST(0) и ST(i), верхний элемент выталкивается из регистрового стека

8087

fcomp ST(5)

D8 D9

FCOMP

Сравнить ST(0) и ST(1), верхний элемент выталкивается из регистрового стека

8087

fcomp

DE D9

FCOMPP

Сравнить ST(0) и ST(1), из регистрового стека выталкивается два верхних элемента

8087

fcompp

 

Операция:

CASE (Отношение операндов) OF

  ST > SRC: C3, C2, C0 ¬ 000;

  ST < SRC: C3, C2, C0 ¬ 001;

  ST = SRC: C3, C2, C0 ¬ 100;

ESAC;

IF ST(0) или SRC в неподдерживаемом формате или NaN

THEN

  #IA

  IF FPUControlWord.IM = 1

  THEN

     C3, C2, C0 = 111;

  FI;

FI;

IF Команда FCOMP

THEN

  PopRegisterStack;

FI;

IF Команда FCOMPP

THEN

  PopRegisterStack;

  PopRegisterStack;

FI;

Описание:

Команды сравнения вещественных значений сравнивают вершину стека с операндом-источником, который может быть регистром или операндом в памяти (коротким или длинным вещественным). По результатам сравнения устанавливаются биты условий C0, C2, C3 регистра SW.

Команда FCOMP, кроме этого, выталкивает из стека верхний элемент (ST).

Команда FCOMPP — два верхних элемента. Биты условий регистра SW аналогичны флагам регистра EFLAGS, они устанавливаются по результатам операций FPU, а их соответствие флагам приведено в таблице 6.142.

Таблица 6.142. Соответствие между битами C0..C3 регистра SW
и битами регистра EFLAGS

Флаги FPU

Флаги EFLAGS

C0

CF

C1

Нет

C2

PF

C3

ZF

Если операнд — NaN, представлен в неопределенном формате или регистр помечен как пустой, возникает исключение #IA, и биты условий устанавливаются в "несравнимо" (С1 C2 С3 = 111). Флаг C1 устанавливается равным 0 в случае возникновения стековой ошибки #IS.

Знак нуля игнорируется, так что -0.0 равен +0.0.

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


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

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


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

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


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

Входит в группу команд: Система команд FPU



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

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

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