logo

Главная Система команд x86 Система команд FPU FICOMP

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

FICOMP

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

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

IS

IA

D

Z

O

U

P

*

*

*

 

 

 

 

 

Код

Команда

Описание

Проц.

Пример

DE /2

FICOM m16int

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

8087

ficom word ptr [eax]

DA /2

FICOM m32int

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

8087

ficom dword ptr [si]

DE /3

FICOMP m16int

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

8087

ficomp tpas

DA /3

FICOMP m32int

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

8087

ficomp dword ptr [bp]

Описание:

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

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

Таблица 6.154. Соответствие между битами 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.

Операция:

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

  Не сравнимые:   C3, C2, C0 = 111;

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

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

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

ESAC;

IF (Команда FICOMP) THEN Pop(ST); FI;

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

#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




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

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

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