私はmasmとアセンブリが初めてで、助けが必要です。私はすでにこれにおそらく6時間を費やしています。3 つのテキスト ボックスと 2 つのボタンがあります。ボタンの 1 つは、テキスト ボックスの数値を乗算して結果を 3 番目のテキスト ボックスに表示し、もう 1 つのボタンは、2 つのテキスト ボックスの数値を除算して結果を 3 番目のテキスト ボックスに表示します。ほとんどの場合、数字には小数が含まれます。
いろいろ試しましたが、これが一番近いと思うコードです。
分ける
invoke GetDlgItemInt,hWin,textbox1,NULL,TRUE
mov esi,eax
invoke GetDlgItemInt,hWin,textbox2,NULL,TRUE
mov edi,eax
mov math1,esi
fild math1
mov math2,edi
fidiv math2
fstsw math3
invoke SetDlgItemInt,hWin,textbox3,math3,TRUE
かける
invoke GetDlgItemInt,hWin,textbox1,NULL,TRUE
mov esi,eax
invoke GetDlgItemInt,hWin,textbox2,NULL,TRUE
mov edi,eax
mov math1,esi
fild math1
mov math2,edi
fimul math2
fstsw math3
invoke SetDlgItemInt,hWin,textbox3,math3,TRUE
。データ
math1 dd ?
math2 dd ?
math3 dw ?
上記のコードでは、テキスト ボックスに間違った数値が表示されます。誰かが私に何をする必要があるか教えてください。
ありがとうございました
アップデート
このコードは機能します
LOCAL var1 :QWORD
LOCAL var2 :QWORD
LOCAL var3 :QWORD
LOCAL str1[19]:BYTE
LOCAL str2[19]:BYTE
LOCAL str3[19]:BYTE
invoke GetDlgItemText,hWin,textbox1,addr str1,9
invoke StrToFloat,addr str1,addr var1
invoke GetDlgItemText,hWin,textbox2,addr str2,9
invoke StrToFloat,addr str2,addr var2
finit
fld var1
fld var2
fdiv
fstp var3
invoke FloatToStr,var3,addr str3
invoke SetDlgItemText,hWin,textbox3,addr str3