gpt4 book ai didi

windows - masm FPU 到 fasm FPU 无​​法转换并且不起作用

转载 作者:可可西里 更新时间:2023-11-01 10:47:14 25 4
gpt4 key购买 nike

我在 masm 中有这段代码来处理 FPU,它工作得很好

在这段代码中,我从 2 个不同的文本框中获取一个数字,然后将它们相除,然后将结果输出到另一个文本框

这是本地的数据

LOCAL variable1 :QWORD
LOCAL variable2 :QWORD
LOCAL variable3 :QWORD

LOCAL string1[20]:BYTE
LOCAL string2[20]:BYTE
LOCAL string3[20]:BYTE

这是代码

invoke GetDlgItemText,hWin,textbox1,addr string1,9
invoke StrToFloat,addr string1,addr variable1

invoke GetDlgItemText,hWin,textbox2,addr string2,9
invoke StrToFloat,addr string2,addr variable2

finit
fld variable1
fld variable2
fdiv
fstp variable3

invoke FloatToStr,variable3,addr string3
invoke SetDlgItemText,hWin,textbox3,addr string3

我正在尝试将代码转换为 fasm

这是我目前所拥有的,但它不起作用,textbox3 只是说 0

这是数据(这不是本地数据,因为我还没有学会如何在 fasm 中做到这一点)

v1 dq ?
v2 dq ?
v3 dd ?
v4 rb 20

这是代码

invoke GetDlgItemTextA,[hWin],textbox1,addr v1,100 
invoke GetDlgItemTextA,[hWin],textbox2,addr v2,100

finit
fld qword [v1]
fld qword [v2]
fdivp
fstp qword [v3]

cinvoke wsprintfA,addr v4,"%u",[v3]
invoke SetDlgItemTextA,[hWin],textbox3,addr v4

我知道这段代码不对,因为我一开始没有将文本转换为 float ,但我不知道该怎么做

我也尝试了一个更简单的版本,它也没有用

mov [v1],5.3
mov [v2],7.1

finit
fld [v1]
fld [v2]
fdivp
fstp [v3]

cinvoke wsprintfA,addr v4,"%u",[v3]
invoke SetDlgItemTextA,[hWin],maximumoutputpowertext,addr v4

所以我的问题是有人可以告诉我如何从 2 个不同的文本框中读取数字,然后将它们分开并将结果返回到另一个文本框使用 fasm 代码

谢谢

最佳答案

演示代码中存在几个问题。

一开始不太清楚StrToFloat程序是什么?它是从某个 DLL 导入的,还是代码或其他库的一部分?

如果导入此程序,则也必须将其导入到 FASM 程序中。否则它可以从头开始编写或从 MASM 程序以源代码形式移植。

此处的直接显示停止器是 mov [v1], FLOAT_CONSTANT 指令。原因是 v1 是 qword 变量,但是 mov 只能移动 dword 立即值(即使在 64 位环境中)。

mov dword [v1], 5.0 工作正常,但当然这不是 OP 所需要的。 float qword 常量也可以在编译时立即定义:v1 dq 3.2

如果我们真的想在运行时设置一些 qword float 常量,我们必须用以下两条指令来实现:

    a = 5.3

mov dword [var], (a and $ffffffff)
mov dword [var+4], (a shr 32)

var dq ?

FASM 语法中的原始 FPU 代码将是:

    finit
fld [variable1]
fdiv [variable2]
fstp [variable3]

关于windows - masm FPU 到 fasm FPU 无​​法转换并且不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18618591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com