FLD类似于 PUSH指令
FSTP类似于 POP指令
FADD类似于 ADD指令
1、FLD
指令格式:
FLD STReg/MemReal
指令功能:
将浮点数据压入协处理器的堆栈中。当进行内存单元内容压栈时,系统会自动决定传送数据的精度。比如:用DD或REAL4定义的内存单元数值是单精度数等。
STReg是处理器堆栈寄存器ST(0)~ST(7)。
例如:
| .387 data1 data2 data3 …… FLD FLD FLD FLD |
2、FST
| 指令格式: 指令功能: | FST 将协处理器堆栈栈顶的数据传送到目标操作数中。在进行数据传送时,系统自动根据控制寄存器中舍入控制位的设置把栈顶浮点数舍入成相应精度的数据。 |
3、FSTP
| 指令格式: | FSTP |
指令功能: | 与FST相类似,所不同的是:指令FST执行完后,不进行堆栈的弹出操作,即:堆栈不发生变化,而指令FSTP执行完后,则需要进行堆栈的弹出操作,堆栈将发生变化。 |
从上面的浮点传送指令中可以看出,不仅可以对内存变量进行传送,也可以进行寄存器之间的传送,这一点是整型数据以及BCD型数据传送指令所不具有的。
举例:
汇编指令:fld dword ptr ds:[eax+0xC] 意思是将[eax+c]的值以浮点型放进ST0里面
汇编指令:fstp dword ptr ss:[ebp-0x20] 意思是将ST0里面的浮点值,放到ebp-20这个内存里面,同是清空ST0里面的值