操作碼 |
指令 |
說明 |
9B DD /7 |
FSTSW m2byte |
檢查未決的無掩碼浮點異常之後,將 FPU 狀態字儲存到 m2byte。 |
9B DF E0 |
FSTSW AX |
檢查未決的無掩碼浮點異常之後,將 FPU 狀態字儲存到 AX 暫存器。 |
DD /7 |
FNSTSW* m2byte |
將 FPU 狀態字儲存到 m2byte,不檢查未決的無掩碼浮點異常。 |
DF E0 |
FNSTSW* AX |
將 FPU 狀態字儲存到 AX 暫存器,不檢查未決的無掩碼浮點異常。 |
將 FPU 狀態字的當前值儲存到目標位置。目標運算元可以是雙位元組的記憶體位置或 AX 暫存器。在儲存狀態字之前,FSTSW 指令檢查並處理未決的無掩碼浮點異常,FNSTSW 指令則不會。
FNSTSW AX 形式的指令主要用於條件分支(例如,用在 FPU 比較指令、FPREM、FPREM1 或 FXAM 指令之後),分支的方向取決於 FPU 條件程式碼標誌的狀態。(請參閱“IA-32 英特爾(R) 體系結構軟件開發人員手冊”第 1 卷第 7 章中標題為“根據 FPU 條件程式碼進行的分支與條件移動”的部分)。在不使用中斷的環境中,還可以使用此指令啟用異常處理程式(通過檢查異常標誌)。執行 FNSTSW AX 指令時,處理器會在執行其它指令之前更新 AX 暫存器。這樣,就可以確保 AX 暫存器儲存的狀態是 FPU 指令完成之前的狀態。
在 MS-DOS* 操作系統相容模式中操作奔騰(R) 或 Intel486™ 處理器時,FNSTSW 指令(在特殊的情況下)可能會在執行(以便處理未決的 FPU 異常)之前中斷。如需有關這些情況的說明,請參閱“IA-32 英特爾(R) 體系結構軟件開發人員手冊”第 1 卷附錄 D 中標題為“無等待 FPU 指令可以在視窗中發生 FPU 中斷”的部分。在奔騰 Pro 處理器上,FNSTSW 指令不能以此方式中斷。
DEST FPUStatusWord;
C0、C1、C2 及 C3 未定義。
無。
#GP(0) - 如果目標位於不可寫的段。如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。如果 DS、ES、FS、或 GS 暫存器用於訪問記憶體,並且它包含空的段選擇器。
#SS(0) - 如果記憶體運算元有效地址超出 SS 段限制。
#NM - 如果 CR0 中的 EM 或 TS 設定為 1。
#PF(錯誤程式碼) - 如果發生頁錯誤。
#AC(0) - 如果啟用對齊檢查並在目前特權級別為 3 時進行未對齊的記憶體引用。
#GP - 如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。
#SS - 如果記憶體運算元有效地址超出 SS 段限制。
#NM - 如果 CR0 中的 EM 或 TS 設定為 1。
#GP(0) - 如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。
#SS(0) - 如果記憶體運算元有效地址超出 SS 段限制。
#NM - 如果 CR0 中的 EM 或 TS 設定為 1。
#PF(錯誤程式碼) - 如果發生頁錯誤。
#AC(0) - 如果在啟用對齊檢查的情況下進行未對齊的記憶體引用。