logo

Воскресенье 11 Декабрь 2016 (GMT+0300)

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

FXTRACT

Выделить порядок и мантиссу

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

IS

IA

D

Z

O

U

P

*

*

*

*

 

 

 

 

Код

Команда

Описание

Проц.

Пример

D9 F4

FXTRACT

Выделить в значении ST(0) порядок и мантиссу, сохранить порядок в ST(0) и загрузить мантиссу в регистровый стек

8087

fxtract

Операция:

TEMP = Значение ST;

ST = Порядок ST;

Декремент указателя вершины стека FPU;

ST = TEMP;

Описание:

Команда FXTRACT выделяет в значении ST(0) его порядок и мантиссу. Порядок замещает исходный операнд в ST(0), а затем мантисса загружается в стек.

После выполнения команды FXTRACT новая вершина стека ST(0) содержит значение мантиссы исходного операнда, которое представлено вещественным числом. Знак этого числа такой же, как и у исходного операнда, его порядок равен нулю (значение 0x3FFFh), а мантисса идентична мантиссе исходного операнда. При этом ST(1) содержит значение несмещенного порядка исходного операнда, который выражен вещественным числом.

Чтобы проиллюстрировать действие FXTRACT, предположим, что ST содержит число с показателем равным +4 (т.е. поле порядка содержит 0x4003h). После выполнения FXTRACT, ST(1) будет содержать вещественное число +4.0, а именно: положительный знак, в поле порядка значение 0x4001h (не смещенное +2), поле мантиссы содержит 1.00...00b. Другими словами, значение в ST(1) будет равно 1.0 * 22= 4. Если ST содержит операнд, с порядком равным -7 (т.е. поле порядка содержит 0x3FF8h), тогда FXTRACT возвратит в ST(1) порядок равный -7.0 (-1.75 * 22= -7.0). В обоих случаях после FXTRAСT поля знака и мантиссы в ST будут такими же, что и у исходного операнда, а поле порядка будет содержать 0x3FFFh (нулевой порядок).

Если исходный операнд равен нулю (с любым знаком), возникает исключение #Z. Если при этом исключение #Z замаскировано, то FXTRACT возвращает -∞ в ST(1) и нуль со знаком равным знаку исходного операнда в ST(0).

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

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

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

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

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

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

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

Замечание:

Команда FXTRACT на процессорах Intel387, Intel486, … , если исходным операндом является нуль, вызывается исключение #Z и в ST(1) заносится -∞. Если операндом является +∞, исключения не возникает.

Для сопроцессоров Intel287 и 8087, если операндом является нуль, в ST(1) заносится нуль, а исключения #Z не возникает. Если же исходным операндом является +∞, то возникает исключение #IA.

Это не влияет на программное обеспечение которое обычно обходит 0 и ∞. Изменение было рекомендовано IEEE-754 для полной поддержки функции logb(x).


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



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

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

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