我是 masm 和组装的新手,需要一些帮助。我已经在这上面花了大概 6 个小时。我有 3 个文本框和 2 个按钮。我希望其中一个按钮将文本框中的数字相乘并在第三个文本框中显示结果,另一个按钮将两个文本框中的数字相除并在第三个文本框中显示结果。这些数字几乎总是会有小数。
我已经尝试了很多东西,但这是我认为最接近的代码。
划分
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