1

我在使用时遇到了很大的问题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!!!这怎么可能??我尝试交换变量,但什么也没有!!!你能帮助我吗??=(

4

2 回答 2

6

如果 FPU 与 8087 一样古老,则必须fwaitfdiv. 否则,您可能会在 FPU 仍在执行除法时从 FPU 读取结果,而您写回的结果未定义。

此“功能”已在 80287 FPU 中删除。

于 2012-03-25T07:24:01.950 回答
1

呈现的代码没有表现出所述的问题。它计算 0.3(3) 与FDIV(它实际上是FDIVP ST(1), ST,因此它将 ST(1)=1.0 除以 ST(0)=3.0) 然后将其存储为 10 个字节的序列 (AB AA AA AA AA AA AA AA FD 3F ) 进入resultado.

于 2012-03-25T09:26:12.187 回答