2

FPUを処理するためにこのコードを大量に持っていますが、うまく機能します

このコードでは、2 つの異なるテキスト ボックスから数値を取得し、それらを分割して、結果を別のテキスト ボックスに出力します。

これはローカルのデータです

LOCAL variable1 :QWORD
LOCAL variable2 :QWORD
LOCAL variable3 :QWORD

LOCAL string1[20]:BYTE
LOCAL string2[20]:BYTE
LOCAL string3[20]:BYTE

これがコードです

invoke GetDlgItemText,hWin,textbox1,addr string1,9
invoke StrToFloat,addr string1,addr variable1

invoke GetDlgItemText,hWin,textbox2,addr string2,9
invoke StrToFloat,addr string2,addr variable2

finit
fld variable1
fld variable2
fdiv
fstp variable3

invoke FloatToStr,variable3,addr string3
invoke SetDlgItemText,hWin,textbox3,addr string3

コードをfasmに変換しようとしています

これは私がこれまでに持っているものですが、機能していません textbox3 は単に 0 と言っています

これがデータです (fasm でその方法をまだ学んでいないため、これはローカル データではありません)

v1 dq ?
v2 dq ?
v3 dd ?
v4 rb 20

これがコードです

invoke GetDlgItemTextA,[hWin],textbox1,addr v1,100 
invoke GetDlgItemTextA,[hWin],textbox2,addr v2,100 

finit
fld qword [v1]
fld qword [v2]
fdivp
fstp qword [v3]

cinvoke wsprintfA,addr v4,"%u",[v3]
invoke SetDlgItemTextA,[hWin],textbox3,addr v4

最初にテキストをフロートに変換していないため、このコードが正しくないことはわかっていますが、方法がわかりません

よりシンプルなバージョンも試しましたが、どちらも機能しませんでした

mov [v1],5.3
mov [v2],7.1

finit
fld [v1]
fld [v2]
fdivp
fstp [v3]

cinvoke wsprintfA,addr v4,"%u",[v3]
invoke SetDlgItemTextA,[hWin],maximumoutputpowertext,addr v4

私の質問は、誰かが2つの異なるテキストボックスから数値を読み取り、それらを分割し、fasmコードを使用して別のテキストボックスに結果を返す方法を教えてください。

ありがとうございました

4

1 に答える 1

0

デモのコードにはいくつかの問題があります。

最初は、StrToFloat手順が明確ではありませんか?DLL からインポートされたものですか、それともコードの一部ですか、それとも他のライブラリですか?

このプロシージャをインポートする場合は、FASM プログラムにもインポートする必要があります。それ以外の場合は、ゼロから作成するか、MASM プログラムからソース形式で移植することができます。

ここでの即時のショー ストッパーはmov [v1], FLOAT_CONSTANT命令です。その理由は、v1qword 変数ですが、mov移動できるのは dword 即値のみです (64 ビット環境でも)。

mov dword [v1], 5.0正常に動作しますが、もちろん、OP が必要とするものではありません。フローティング qword 定数も、コンパイル時にすぐに定義できます。v1 dq 3.2

実行時に qword 浮動定数を本当に設定したい場合は、次の 2 つの手順で作成する必要があります。

    a = 5.3

    mov  dword [var], (a and $ffffffff)
    mov  dword [var+4], (a shr 32)

    var dq ?

FASM 構文の元の FPU コードは次のようになります。

    finit
    fld  [variable1]
    fdiv [variable2]
    fstp [variable3]
于 2013-09-05T07:46:15.310 に答える