【发布时间】:2020-05-21 08:18:05
【问题描述】:
我有以下代码(这是我的讲师编写的代码),它计算数字 (a) 的根。
[bits 32]
call getaddr ; get the runtime addres of format
format db "delta = %lf", 0xA, 0
offset equ $ - format
a dq 6.0 ;
b dq 10.0
c dq 16.0
getaddr:
finit
mov eax, [esp]
lea eax,[eax+offset]
fld qword[eax]
fsqrt
lea eax, [esp+4]
fstp qword[eax]
call[ebx+3*4]; start screen print instuctions
add esp, 3*4
push 0
call[ebx+0*4]
现在,我需要修改此代码以对给定的三个数字执行几个操作,这是我的问题,因为我不知道如何将它们放在 FPU 堆栈上。谁能告诉我我该怎么办?我尝试执行与上面相同的操作,但参考堆栈的下一个元素(在我的尝试之下),但不幸的是它无法正常工作(程序不显示任何内容)。我将非常感谢任何帮助。几天前我添加了一个类似的问题,我得到了一些关于如何改进代码以使其更具可读性和更好的建议,但是我的讲师不接受他提出的解决方案。 我尝试获取 b 变量而不是 a:
mov eax, [esp+4]
lea eax,[eax+offset]
fld qword[eax]
fsqrt
lea eax, [esp+4]
fstp qword[eax]
call[ebx+3*4]; start screen print instructions
add esp, 3*4
push 0
call[ebx+0*4]