我有这个代码应该减去两个数字,一个浮点数(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
如何获得我期望的结果?
答案 0 :(得分:1)
解决方案是:
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,您的答案就是解决方案。 ^ _ ^