我使用fdiv
时遇到了很大问题!我试图划分1/3
所以这就是我做的事情
.model small
.stack 100h
.data
var1 dd 1
var2 dd 3
var3 dd 2
resultado dt 0.0
.code
mov ax,@data
mov ds,ax
finit
fild var1
fild var2
fdiv
fstp resultado
ffree
.exit
正如您所看到的,我将结果移至resultado
因为我无法在st(0)
中看到结果(我使用的是tasm所以我只能在调试器中看到变量)结果应该是是3EAAAA3A
但是我得到40400000
......那是3
!!!这怎么可能??我试过交换变量而没有!你能帮助我吗?? =(
答案 0 :(得分:5)
如果FPU与8087一样旧,则必须在fwait
之后放置fdiv
指令。否则,您可能会在FPU仍在执行除法时从FPU读取结果,并且您回写的结果未定义。
此功能已在80287 FPU中删除。
答案 1 :(得分:1)
所提供的代码未显示所述问题。它用FDIV
计算0.3(3)(它实际上是FDIVP ST(1), ST
,因此它将ST(1)= 1.0除以ST(0)= 3.0)然后将其存储为10字节的序列( AB AA AA AA AA AA AA AA 3F)resultado
。