fabs
Absolute Value
FABS
Replaces ST(0) with its absolute value.
Details
Replaces the value in ST(0) with its absolute value by clearing the sign bit. The operation does not modify the x87 status flags and does not raise exceptions. This is a fast unary operation that operates solely on the register stack.
Pseudocode Operation
ST(0) ← |ST(0)|;
Example
FABS
Encoding
Binary Layout
D9
+0
E1
+1
Operands
Reference (Intel® SDM)
Instruction Forms
| Opcode | Instruction | Op/En | 64/32-bit Mode | CPUID | Description |
|---|---|---|---|---|---|
| D9 E1 | FABS | Valid Valid | Replace ST with its absolute value. |
Description
Clears the sign bit of ST(0) to create the absolute value of the operand. The following table shows the results obtained when creating the absolute value of various classes of numbers.
Table 3-19. Results Obtained from FABS
ST(0) SRC ST(0) DEST
− ∞ + ∞
− F + F
− 0 + 0
+ 0 + 0
+ F + F
+ ∞ + ∞
NaN NaN
Operation
ST(0) := |ST(0)|;
Exceptions
Protected Mode Exceptions
#NM CR0.EM[bit 2] or CR0.TS[bit 3] = 1.
#UD If the LOCK prefix is used.
Real-Address Mode Exceptions
Same exceptions as in protected mode.
Virtual-8086 Mode Exceptions
Same exceptions as in protected mode.
Compatibility Mode Exceptions
Same exceptions as in protected mode.
64-Bit Mode Exceptions
Same exceptions as in protected mode.
FABS—Absolute Value Vol. 2A 3-309
FABS—Absolute Value Vol. 2A 3-310