0

2 つの整数を除算して浮動小数点数を取得し、浮動小数点数を結果セクションに表示しようとしています。問題は、それが非常に大きな整数として表示されるようになったことです。私はそれを正しく行っているかどうかわかりません。

コード:

定義:

floatVal         REAL4   0.0f
numCount         SDWORD   0 
nextNum          SDWORD   0
totalSum         SDWORD   0
averageNum       SDWORD   ?

問題のコード:

fild totalSum
fidiv numCount
fstp floatVal

その後、表示する:

mov     edx, OFFSET average_1
call    WriteString
mov   eax, floatVal
call      WriteDec
call      CrLf

私は irvine32 ライブラリを使用していますが、アセンブリ言語で float を使用しようとするのはこれが初めてです。

4

1 に答える 1

1

eax32 ビットの float が誤ってレジスタに収まる一方で、WriteDec関数は整数を想定しているため、ビット パターンを解釈して、意図しない出力を生成します。浮動小数点数は、そのように整数に直接マップされません。

結果を整数に変換するか、浮動小数点数を出力する方法を見つける必要があります。

正しく実行しているかどうかだけに関心がある場合は、デバッガを使用してください。ちなみに、投稿したコードは正しいようです。

于 2013-07-28T01:15:52.567 に答える