0

我正在编写一个计算 arctan 函数的程序。
可以正常工作的功能,但是当我尝试获取 bcd-value fbstp 命令存储奇怪的值和 fstp 存储正确的值时。

segment data 
result:  resb 10
tmp_val: dd 000000000h
precs:   dq 03a83126fh ; 0.001
arg:     dd 03f800000h ; 0.7

segment code
..start:

mov ax,data
mov ds, ax
finit

call calc_value
fst dword[tmp_val]
fbstp tword [result]

mov ax, 4C00h
int 21h

在 tmp_val: 0x3f490edb (0.785383)
和结果在内存中执行后: 0x0000000000000000001

我为 DOS 写这个

4

1 回答 1

2

英特尔指令集参考说明了这一点fbstp

如果源值是非整数值,则根据 FPU 控制字的 RC 字段指定的舍入模式将其舍入为整数值。

因此,结果 1 听起来是正确的。

于 2014-03-05T16:34:24.160 回答