师8086/8087 1/3 = 3?

A Z*_*iga 1 x86 assembly fpu tasm x87

我有一个很大的问题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 
Run Code Online (Sandbox Code Playgroud)

你可以看到我将结果移动到resultado因为我看不到结果st(0)(我正在使用tasm所以我只能在调试器中看到变量)结果应该是3EAAAA3A但我得到了40400000...那就是3!!! 这怎么可能??我试过交换变量而没有!你能帮助我吗??=(

Nil*_*nck 5

如果FPU和8087一样旧,你必须在fwait后面放一条指令fdiv.否则,当FPU仍在执行除法时,您可以从FPU读取结果,并且您回写的结果是未定义的.

80287 FPU中已删除此"功能".