3-296 Vol. 2A FBSTP—Store BCD Integer and Pop
INSTRUCTION SET REFERENCE, A-M
FBSTP—Store BCD Integer and Pop
Description
Converts the value in the ST(0) register to an 18-digit packed BCD integer, stores the
result in the destination operand, and pops the register stack. If the source value is a
non-integral value, it is rounded to an integer value, according to rounding mode
specified by the RC field of the FPU control word. To pop the register stack, the
processor marks the ST(0) register as empty and increments the stack pointer (TOP)
by 1.
The destination operand specifies the address where the first byte destination value
is to be stored. The BCD value (including its sign bit) requires 10 bytes of space in
memory.
The following table shows the results obtained when storing various classes of
numbers in packed BCD format.
If the converted value is too large for the destination format, or if the source operand
is an ∞, SNaN, QNAN, or is in an unsupported format, an invalid-arithmetic-operand
condition is signaled. If the invalid-operation exception is not masked, an invalid-
arithmetic-operand exception (#IA) is generated and no value is stored in the desti-
Opcode Instruction 64-Bit
Mode
Compat/
Leg Mode
Description
DF /6 FBSTP m80bcd Valid Valid Store ST(0) in m80bcd and pop ST(0).
Table 3-24. FBSTP Results
ST(0) DEST
-
∞ or Value Too Large for DEST Format *
F ≤ −1
−D
−1 < F < −0 **
−0 −0
+0 +0
+0 < F < +1
**
F ≥ +1 +D
+
∞ or Value Too Large for DEST Format *
NaN *
NOTES:
F Means finite floating-point value.
D Means packed-BCD number.
* Indicates floating-point invalid-operation (#IA) exception.
** ±0 or ±1, depending on the rounding mode.