-----------------------------------------------------------------|Код Команда Число Парал- Описание ||операции тактовых лельное || циклов выпол- || нение ||D9 F4 FXTRACT 19(16-20) 4(2-4) Разделение ST на экспоне-|| нту и мантиссу: ST заме- || няется экспонентой, в || мантисса помещается в || стек FPU |----------------------------------------------------------------- Работа команды врем <- мантисса ST;ST <- экспонента ST;Декремент указателя вершины стека FPU;ST <- врем; ОписаниеFXTRACT разделяет значение в ST на экспоненту и мантиссу. Экспонентазаменяет исходный операнд на стеке, и затем в стек помещается мантисса.После выполнения команды FXTRACT ST (новая вершина стека) содержитзначение исходной мантиссы, выраженное действительным числом: его знак тотже, что и знак операнда, экспонента равна истинному нулю (16.383 или 3FFFHсо смещением), а мантисса идентична мантиссе исходного операнда. ST(1)содержит значение истинной (несмещенной) экспоненты исходного операнда,выраденное действиельным числом.Для того, чтобы проиллюстрировать работу команды FXTRACT, предположим, чтоST содержит число, истинная экспонента которого равна +4 (т.е. его полеэкспоненты содержит 4003H). После выполнения FXTRACT ST(1) будет содержатьдействительное число +4.0; его знак будет положительным, поле экспонентыбудет содержать 4001H (истинное +2), а поле мантиссы будет содержать 100..00В. Другими словами, значение в ST(1) будет равно 1.0 x 2* *2 = 4.Если ST содержит операнд, истинная компонента которого равна -7 (т.е. полеэкспоненты его содержит значение 3FF8H), то FXTRACT возвратит "экспоненту"равную -7.0l после выполнения команды поля ST(1) знака и экспоненты будутсодержать C001H (отрицательный знак, истинная экспонента 2), а мантиссабудет равна 1 1100..00В. Другими словами, значение в ST(1) будет равно-1.75 x 2**2 = -7.0. В обоих случаях после FXTRACT поля ST знака имантиссы будут равны соответствующим полям исходного операнда, а полеэкспоненты будет содержать 3FFFH (истинный 0). Изменяемые флаги модуля операций с плавающей точкойС1, как описано в Таблице 15-1; C0, C2, C3 не определены. Исключения числовых операцийZ, D, I, IS Исключения защищенного режима#NM при установленном EM или TS в CR0. Исключения режима реальных адресовПрерывание 7 при установленном EM или TS в CR0. Исключения виртуального режима 8086#NM при установленном EM или TS в CR0. ПримечанияFXTRACT (выделить экспоненту и мантиссу) выполняет надмножестворекомендуемой IEEE функции logb(x).Если исходный операнд равен нулю, то FXTRACT оставляет в ST(1) минусбесконечность (экспонента), а ST будет присвоено нулевое значение сознаком, равным знаку исходного операнда. В этом случае также возможногенерирование исключения деления на ноль.ST(7) должен быть пустым, чтобы избежать исключения неверной операции.Команда ST(7) полезна для выполнения операций масштабирования степени идиапазона. Для выполнения общей операции возведения в степень используютсяобе команды, FXTRACT и команда экспоненцирования по основанию 2 F2XM1. Дляпреобразования чисел в расширенном действительном формате к десятичномупредставлению (например, для печати или вывода на дисплей) требуется нетолько команда FBSTP, но и команда FXTRACT, позволяющая масштабирование,не ведущее к переполнению диапазона расширенного формата. FXTRACT такжеможет быть полезна при отладке, поскольку позволяет отдельно рассматриватьэкспоненту и мантиссу действительного числа.