我在重写某些ASM代码时遇到了一些问题。 Atm以下代码
FLD DWORD PTR SS:[ESP+20]
FDIV DWORD PTR SS:[ESP+28]
FSTP QWORD PTR SS:[ESP]
其中[ESP + 20]包含1到10之间的值,[ESP + 28]为30。
现在,我正在尝试重写这段代码,跳过除法并只分配一个静态值,但它似乎不能用于某种原因,它只输出“0”。我正在做以下事情:
MOV DWORD PTR SS:[ESP+28], 0A
FSTP QWORD PTR SS:[ESP]
我对这个组装工作还很陌生,所以我可能做错了什么。 这里的任何人都能指出我正确的方向吗?我真的很感激!
提前致谢
答案 0 :(得分:2)
让我们看看
FSTP QWORD PTR SS:[ESP]
将FP堆栈顶部的浮点值存储到指定的地址中,然后将其弹出。
为此,您必须首先将常量加载到FP堆栈上。
所以你需要先做这样的事情:
MOV DWORD PTR SS:[ESP+28], 0A
FLD DWORD PTR SS:[ESP+28]