logo

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

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

FPREM1

Найти частичный остаток деления по стандарту IEEE-754

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

IS

IA

D

Z

O

U

P

*

*

*

 

 

*

 

 

Код

Команда

Описание

Проц.

Пример

D9 F5

FPREM1

ST(0) = остаток от деления ST(0) на ST(1) по стандарту IEEE-754

Intel387

fprem1

Описание:

Команда FPREM1 вычисляет остаток, получаемый при делении ST на ST(1), и оставляет результат в ST.

Команда FPREM1 является операцией вычисления остатка по стандарту IEEE-754. Она отличается от FPREM методом округления частного, когда разница показателей степени ST и ST(1) меньше 64 (смотрите пункт "Операция").

FPREM1 всегда возвращает точный результат; исключения никогда #P не происходит, управление округлением не влияет на результат.

FPREM1 работает методом итерационного вычитания и может уменьшить показатель степени ST не более чем на 63 за одно свое выполнение. Если в процессе выполнения FPREM1 получается остаток меньший чем входное значение в ST(1), то функция считается выполненной и флаг C2 очищается. В противном случае, флаг C2 устанавливается, а результат в ST называется неполным остатком. Показатель степени неполного остатка меньше, чем показатель степени исходного делимого, по крайней мере на 32. Программа может перезапускать команду (используя неполный остаток в ST как делимое), пока флаг C2 не будет очищен.

В таблице 6.171. приведены значения, возвращаемые командой FPREM1 для различных классов операндов.

Таблица 6.171. Значения, возвращаемые командой FPREM1 для различных классов операндов

SRCDEST

-INF

-F

-0

+0

+F

+INF

NaN

-INF

#IA

#IA

#IA

#IA

#IA

#IA

NaN

-F

ST(0)

±F или -0

#Z

#Z

±F или -0

ST(0)

NaN

-0

-0

-0

#IA

#IA

-0

-0

NaN

+0

+0

+0

#IA

#IA

+0

+0

NaN

+F

ST(0)

±F или +0

#Z

#Z

±F или +0

ST(0)

NaN

+INF

#IA

#IA

#IA

#IA

#IA

#IA

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

               

F - Конечное вещественное значение

       

 

Исключение #IA также возникает, если любой из операндов SNaN или представлен в неподдерживаемом формате.

Важный случай использования команды FPREM1 — это уменьшение аргументов периодических функций. Когда уменьшение выполнено, три наименее значащих бита частного сохраняются во флагах C3, C1, C0 регистра SW. Флаг C1 также устанавливается равным 0 в случае возникновения стековой ошибки #IS.

Операция:

EXPDIF = exponent(ST) - exponent(ST(1));

IF EXPDIF < 64

THEN

  QQ = Целое, получаемое округлением ST / ST(1);

     (* к ближайшему целому или к ближайшему четному целому, если результат точно по середине между двумя числами *)

  ST = ST - (ST(1) * Q);

  C2 = 0;

  C0, C1, C3 = Три младших бита Q; (* Q2, Q1, Q0 *)

ELSE

  C2 = 1;

  N = Число между 32 и 63;

  QQ = Целое, получаемое округлением (ST / ST(1)) / 2EXPDIF-N в сторону нуля;

  ST = ST - (ST(1) * QQ * 2EXPDIF-N;

FI;

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

#NM, если CR0.EM = 1 или CR0.TS = 1.

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

#NM, если CR0.EM = 1 или CR0.TS = 1.

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

#NM, если CR0.EM = 1 или CR0.TS = 1.


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




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

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

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