我是masm和assembly的新手,需要一些帮助。我已经花了大概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
答案 0 :(得分:1)
FSTSW
存储状态字,而不是结果。你需要的是FISTP
(对于整数)或FSTP
(对于浮点)。