首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >masm程序集如何使用fpu对数字进行除法和乘

masm程序集如何使用fpu对数字进行除法和乘
EN

Stack Overflow用户
提问于 2013-05-03 12:34:03
回答 1查看 1.1K关注 0票数 0

我是新来的masm和装配,需要一些帮助。我大概已经花了6个小时在这件事上。我有三个文本框和两个按钮。我希望其中一个按钮将文本框中的数字相乘,并在第三个文本框中显示结果,另一个按钮将两个文本框中的数字除以,并在第三个文本框中显示结果。这些数字几乎总是包含小数。

我尝试了很多东西,但我认为这是最接近的代码。

分治

代码语言:javascript
复制
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

相乘

代码语言:javascript
复制
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

代码语言:javascript
复制
math1   dd   ?
math2   dd   ?
math3   dw   ?

上面的代码在文本框中给出了错误的数字。有人能告诉我我需要做什么吗。

谢谢

更新

这段代码起作用

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-03 13:13:13

FSTSW存储的是状态字,而不是结果。您需要的是FISTP (用于整数)或FSTP (用于浮点)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16359059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档