这是一个子函数,参数为一个浮点数
请问这个汇编子函数到底是用什么规则将目标浮点数取整的?
汇编代码如下(以49.019577举例)
PUSH EBP ; 将浮点数49.019577压栈
MOV EBP,ESP
ADD ESP,-0C
WAIT
FSTCW WORD PTR SS:[EBP-2] ; 将FPU控制字(027F)保存
WAIT
MOV AX,WORD PTR SS:[EBP-2] ; 将FPU控制字(027F)保存到AX
OR AH,0C ; AH(02:0010)与C:1100或运算->1110(0E7F)
MOV WORD PTR SS:[EBP-4],AX ; 0E7F保存到堆栈
FLDCW WORD PTR SS:[EBP-4] ; 设置控制寄存器的值(0E7F)
FISTP QWORD PTR SS:[EBP-C] ; 将栈顶数据49.019577舍入整型传送到后面
FLDCW WORD PTR SS:[EBP-2] ; 恢复控制寄存器027F
MOV EAX,DWORD PTR SS:[EBP-C]
MOV EDX,DWORD PTR SS:[EBP-8]
RTN
谢谢了,我查了很久资料了。还是不知道。