global main extern printf section .data x: dd 1.5 y: dd 2.0 z: dd 1.3 msg: db "result = %f", 10, 0 section .text main: push ebp mov ebp, esp pushad fld dword [x] fld dword [y] fcomi jle .else ; x y + x sqrt z * y - / fld dword [x] fld dword [y] faddp ST1, ST0 fld dword [x] fsqrt fld dword [z] fmulp ST1, ST0 fld dword [y] fsubp ST1, ST0 fdivp ST1, ST0 jmp .endif .else: fld dword [x] .endif: sub esp, 8 fstp qword [esp] push dword msg call printf add esp, 12 popad mov esp, ebp pop ebp xor eax, eax ret