如何在NASM中将两个数相减并得到一个负数?

How to subtract two numbers and get a negative number in NASM?

我有这段代码应该减去两个数字,一个浮点数 (10.25) 和一个整数 (15):

extern _printf
global _main
section .bss
  num1: resb 4
  num2: resb 4
section .data
  format_number: db "%f", 10, 0
section .text
_main:

  mov dword [num1], 15
  mov dword [num2], __float32__(10.25)

  sub esp, 8
  fild dword [num2]
  fsub dword [num1]
  fstp qword [esp]
  push format_number
  call _printf
  add esp, 12

ret

我得到的输出是:

1092878336.000000

我期望的输出是:

-4.750000

如何得到我期望的结果?

解决方法是:

extern _printf
global _main
section .bss
  num1: resb 4
  num2: resb 4
section .data
  format_number: db "%f", 10, 0
section .text
_main:

  mov dword [num1], 15
  mov dword [num2], __float32__(10.25)

  sub esp, 8
  fld dword [num2]
  fisub dword [num1]
  fstp qword [esp]
  push format_number
  call _printf
  add esp, 12

ret

我得到的输出是:

-4.750000

感谢@MichaelPetch,您的回答就是解决方案。 ^_^