如何在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,您的回答就是解决方案。 ^_^
我有这段代码应该减去两个数字,一个浮点数 (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,您的回答就是解决方案。 ^_^