1
我有此代碼是應該兩個數的減法,浮子(10.25)和整數(15):如何減去兩個數字並在NASM中獲得負數?
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
如何獲得我期望的結果?
您正在使用'fild'加載已存儲在內存中的'num2'作爲float。您可能一直在尋找類似於'sub esp,8'的東西,'fld dword [num2]' 'fisub dword [num1]' 'fstp qword [esp]'。 FISUB在[num1]處將整數值轉換爲擴展精度浮點數,然後從已包含10.25 –
@MichaelPetch的FPU堆棧頂部減去該值非常感謝,我不知道'fisub'。在我之前的問題中,我會閱讀你告訴我的教程。 –