汇编浮点指令fld、fstp
1、FLD
指令格式:
FLD STReg/MemReal
指令功能:
將浮點數據壓入協處理器的堆棧中。當進行內存單元內容壓棧時,系統會自動決定傳送數據的精度。比如:用DD或REAL4定義的內存單元數值是單精度數等。
STReg是處理器堆棧寄存器ST(0)~ST(7)。
例如:
| ? | .387 data1??DWORD 123, -543 data2??REAL8 -321.5 data3??REAL10 2.5 …… FLD??data1??;壓一個單精度數據進棧 FLD??data2??;壓一個雙精度數據進棧 FLD??ST(0)??;把堆棧寄存器ST(0)的值再壓進棧 FLD??data3??;壓一個擴展精度數據進棧 |
2、FST
| ? | 指令格式: 指令功能: | FST??STReg/MemReal 將協處理器堆棧棧頂的數據傳送到目標操作數中。在進行數據傳送時,系統自動根據控制寄存器中舍入控制位的設置把棧頂浮點數舍入成相應精度的數據。 |
3、FSTP
| ? | 指令格式: | FSTP??STReg/MemReal |
| 指令功能: | 與FST相類似,所不同的是:指令FST執行完后,不進行堆棧的彈出操作,即:堆棧不發生變化,而指令FSTP執行完后,則需要進行堆棧的彈出操作,堆棧將發生變化。 |
從上面的浮點傳送指令中可以看出,不僅可以對內存變量進行傳送,也可以進行寄存器之間的傳送,這一點是整型數據以及BCD型數據傳送指令所不具有的。
舉例: 匯編指令:fld dword ptr ds:[eax+0xC] ? 意思是將[eax+c]的值以浮點型放進ST0里面 匯編指令:fstp dword ptr ss:[ebp-0x20] 意思是將ST0里面的浮點值,放到ebp-20這個內存里面,同是清空ST0里面的值
總結
以上是生活随笔為你收集整理的汇编浮点指令fld、fstp的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编指令prefix rep:
- 下一篇: CreateProcess启动游戏注入D