3-285
INSTRUCTION SET REFERENCE
FXTRACTExtract Exponent and Significand
Description
This instruction separates the source value in the ST(0) register into its exponent and signifi-
cand, stores the exponent in ST(0), and pushes the significand onto the register stack. Following
this operation, the new top-of-stack register ST(0) contains the value of the original significand
expressed as a real number. The sign and significand of this value are the same as those found
in the source operand, and the exponent is 3FFFH (biased value for a true exponent of zero). The
ST(1) register contains the value of the original operands true (unbiased) exponent expressed
as a real number. (The operation performed by this instruction is a superset of the IEEE-recom-
mended logb(x) function.)
This instruction and the F2XM1 instruction are useful for performing power and range scaling
operations. The FXTRACT instruction is also useful for converting numbers in extended-real
format to decimal representations (e.g., for printing or displaying).
If the floating-point zero-divide exception (#Z) is masked and the source operand is zero, an
exponent value of
?
is stored in register ST(1) and 0 with the sign of the source operand is
stored in register ST(0).
Operation
TEMP
<
Significand(ST(0));
ST(0)
<
Exponent(ST(0));
TOP
<
TOP
?
1;
ST(0)
<
TEMP;
FPU Flags Affected
C1
Set to 0 if stack underflow occurred; set to 1 if stack overflow occurred.
C0, C2, C3
Undefined.
Floating-Point Exceptions
#IS
Stack underflow occurred.
Stack overflow occurred.
#IA
Source operand is an sNaN value or unsupported format.
#Z
ST(0) operand is
±
0.
#D
Source operand is a denormal value.
Opcode
Instruction
Description
D9 F4
FXTRACT
Separate value in ST(0) into exponent and significand,
store exponent in ST(0), and push the significand onto the
register stack.