1
私は2つの数値を減算することになって、このコードは、フロート(10.25)及び整数(15)を有する:NASMで2つの数を減算して負の数を得る方法は?
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
Iが得る出力である:
私は期待し1092878336.000000
出力は次のようになります。
-4.750000
私が期待した結果を得るには?
すでにメモリにfloatとして保存されている 'num2'を読み込むために' fild'を使っています。 'sub esp、8' ' fld dword [num2] ' ' fisub dword [num1] ' ' fstp qword [esp] 'のようなものを探しているかもしれません。 FISUBは[num1]で整数値をとり、これを拡張精度floatに変換し、すでに10.25を含むFPUスタックの先頭からその値を減算します。 –
@MichaelPetchありがとう、私は 'fisub'を知らなかった。前の質問で私が言ったチュートリアルを読んでみましょう。 –