; File: double2.asm ; ; Using C printf function to print double values ; ; Declare some external functions extern printf ; the C function, we'll call SECTION .data ; Data section msg: db "Answer: %f", 10, 0 ; The string to print. dv1: dq 1.111 dv2: dq 2.222 dv3: dq 3.333 dv4: dq 4.444 dv5: dq 5.555 dv6: dq 6.666 dv7: dq 7.777 dv8: dq 8.888 dv9: dq 9.999 dva: dq 10.101010 SECTION .text ; Code section. global main main: push ebp ; set up stack frame mov ebp,esp push ebx fld QWORD [dv1] fld QWORD [dv2] fld QWORD [dv3] sub esp, 8 push DWORD msg ; address of ctrl string mov ebx, 3 loop1: fstp QWORD [esp+4] call printf ; Call C function dec ebx jnz loop1 add esp, 12 ; pop 2 args from stack ; return from main pop ebx mov esp, ebp ; takedown stack frame pop ebp ; same as "leave" op ret