操作碼 |
指令 |
說明 |
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;
C1 - 如果發生堆疊下溢,則設定為 0;如果發生堆疊上溢,則設定為 1。
C0、C2、C3 - 未定義。
#IS - 發生堆疊下溢。發生堆疊上溢。
#IA - 源運算元是 SNaN 值或不支援的格式。
#Z - ST(0) 運算元為 ±0。
#D - 源運算元是非規格化值。
#NM - 如果 CR0 中的 EM 或 TS 設定為 1。
#NM - 如果 CR0 中的 EM 或 TS 設定為 1。
#NM - 如果 CR0 中的 EM 或 TS 設定為 1。