FXTRACT - 提取指數與有效位

操作碼

指令

說明

D9 F4

FXTRACT

將 ST(0) 中的值分成指數與有效位,指數儲存到 ST(0),有效位壓入暫存器堆疊。

說明

將 ST(0) 暫存器中的源運算元值分成它的指數與有效位,指數儲存到 ST(0),有效位壓入暫存器堆疊。執行此操作之後,新的棧頂暫存器 ST(0) 包含原始有效位的值,用實數表示。此值的符號與有效位與源運算元值的相同,指數為 3FFFH(零的真指數的偏差值)。ST(1) 暫存器包含原始運算元的真(無偏差)指數值,用實數表示。(此指令執行的操作是 IEEE 推薦的 logb(x) 函式的超集)。

在執行冪與範圍縮放操作時,此指令與 F2XM1 指令非常有用。對於將擴充套件實數格式的數值轉換成小數表示法(例如,爲了列印或顯示),FXTRACT 指令也非常有用。

如果給浮點除零異常 (#Z) 設定掩碼,且源運算元為零,則會將 - 的指數值儲存到 ST(1),將帶源運算元符號的 0 儲存到 ST(0)。

操作

TEMP Significand(ST(0));
ST(0) Exponent(ST(0));
TOP TOP - 1;
ST(0) TEMP;

影響的 FPU 標誌

C1 - 如果發生堆疊下溢,則設定為 0;如果發生堆疊上溢,則設定為 1。

C0、C2、C3 - 未定義。

浮點異常

#IS - 發生堆疊下溢。發生堆疊上溢。

#IA - 源運算元是 SNaN 值或不支援的格式。

#Z - ST(0) 運算元為 ±0。

#D - 源運算元是非規格化值。

保護模式異常

#NM - 如果 CR0 中的 EM 或 TS 設定為 1。

實地址模式異常

#NM - 如果 CR0 中的 EM 或 TS 設定為 1。

虛 8086 模式異常

#NM - 如果 CR0 中的 EM 或 TS 設定為 1。