Professional Documents
Culture Documents
section .data
w_float dd -1234.5678
w_double dq 2.718281828459045
r_float dd 0.0
r_double dq 0.0
section .text
main:
; vypis: 32-bitove cislo
mov eax,[w_float]
call WriteFloat
call WriteNewLine
push 10
add esp, 4
fld1 ; 1 10 e b c d a
fldz ; 0 1 10 e b c d a
=====================================================================
===================================================================
fld1
fldpi
fcom
;fstsw src
; src = mem/ax
fstsw ax
sahf
; fcomi == fcom && fstsw && sahf
ja .st0_vetsi_st1
jb .st0_mensi_st1
je .st0_je_st1
.st0_vetsi_st1:
nop
jmp cont
.st0_mensi_st1:
nop
jmp cont
.st0_je_st1:
nop
jmp cont
cont:
====================================================================
;jak vyrobit NaN
FPU_COND_MASK EQU 0x4500
FPU_IS_NAN EQU 0x0100
FPU_INF_POS EQU 0x7f80_0000
FPU_INF_NEG EQU 0xff80_0000
FPU_NAN_POS EQU 0x7fc0_0100
FPU_NAN_NEG EQU 0xffc0_0100
; fxam - kontroluje ze v st0 je normal number
fxam
fstsw ax
sahf
and ax, FPU_COND_MASK ; maska abych si vytahl c3,c2,c0
cmp ax, FPU_IS_NAN ; je to NaN?
je .je_nan
.je_nan:
push __float32__(10.0)
push __float32__(1.0)
push __float32__(5.0)
call fce
add esp, 12