我是新来的masm和装配,需要一些帮助。我大概已经花了6个小时在这件事上。我有三个文本框和两个按钮。我希望其中一个按钮将文本框中的数字相乘,并在第三个文本框中显示结果,另一个按钮将两个文本框中的数字除以,并在第三个文本框中显示结果。这些数字几乎总是包含小数。
我尝试了很多东西,但我认为这是最接近的代码。
分治
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.data
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发布于 2013-05-03 13:13:13
FSTSW存储的是状态字,而不是结果。您需要的是FISTP (用于整数)或FSTP (用于浮点)。
https://stackoverflow.com/questions/16359059
复制相似问题