FDIV如何在nasm,assembly中使用它

时间:2011-03-19 00:05:47

标签: assembly nasm

我有一个存储在

中的和值
fstp    qword [ebx]  ; Copy contents of st0 to space currently on top of the system stack

如何将其除以寄存器edi?

中存储的整数值 我认为这只是

fdiv edi

但它表示无效组合......等等等等

洞察?

2 个答案:

答案 0 :(得分:1)

你做不到。 FPU无法访问整数寄存器。

答案 1 :(得分:0)

正如Jens在答案中所说,FPU没有直接访问整数寄存器。您将需要使用暂存内存进行传输。这是x87 FPU的主要缺点之一。示例代码可能类似于:

section .bss
fpscratch: resd 1

...

section .text

;other code goes here

MOV fpscratch, edi
FILD fpscratch
FDIV

(注意上面的代码:显然,它没有经过测试,我的装配上有点生锈所以可能有些问题,即使它很好而且很短。)