我正在编写一个计算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写这个
答案 0 :(得分:1)
英特尔指令集参考对fbstp
说明了这一点:
如果源值是非整数值,则舍入为a 整数值,根据RC字段指定的舍入模式 FPU控制字。
因此,1的结果听起来是正确的。