0
我在写一个计算arctan函数的程序。
功能,所有的工作正常,但是当我尝试获得bcd值fbstp命令存储奇怪的值和fstp存储正确的值。FBSTP商店错误值
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
哦。我很愚蠢= _ = 嗯。然后如何打印浮点值? – oleeq2
这可能不是最有效的方法,但可以分成整数和小数部分,打印整数,然后将小数部分乘以10^n(其中n是所需数位数),并在小数点后打印点(具有适当数量的前导和尾随零)。 *实际上你甚至不需要分割,只需在'fbstp'之前进行乘法运算,然后适当放置小数点即可。 – Jester