FINIT

FINIT指令(0xdb,0xe3)用來清除浮點數據暫存器棧和異常,初始化FPU。為程式提供一個“乾淨”的初始狀態。否則,遺留在浮點暫存器棧中的數據可能會產生堆疊溢出。

用途,用法,

用途

該指令清除浮點數據暫存器棧和異常。一般用於驅動程式中的入口點,防止驅動藍屏。同樣,該指令也用於浮點傳送程式。

用法

masm5.0 code
浮點傳送程式
.model small
.8087;識別浮點指令
.stack
.data
f32d dd 100.25 ;單精度浮點數:42C88000 h
f64d dq -0.2109375 ;雙精度浮點數:BFCB(後面12個0) h
f80d dt 100.25e9 ;擴展精度浮點數:4023BABAECD400000000 h
i16d dw 100 ;字整數:0064 h
i32d dd -1234 ;短整數:FFFFFB2E h
i64d dq123456h ;長整數:123456h
b80d dt123456h ;BCD碼數:123456h
ib32 dd ?
bi80 dt ?
.code
.startup
start1: finit;初始化FPU
fld f32d ;壓入單精度浮點數f32d
fld f64d ;壓入雙精度浮點數f64d
fld f80d ;壓入擴展精度浮點數f80d
fld st(1) ;壓入當前st(1),即f64d
fild i16d ;壓入字整數i16d
fild i32d ;壓入短整數i32d
fild i64d ;壓入長整數i64d
fbld b80d ;壓入BCD碼數b80d
start2: fist dword ptr ib32 ;將棧頂(現為b80d)以短整數保存
fxch;st(0)與st(1)互換,現棧頂為i64d
fbstp tbyte ptr bi80 ;將棧頂彈出成BCD碼數
start3: .exit 0
end

相關詞條

熱門詞條

聯絡我們