问题描述
我有一个程序,我必须通过寄存器、堆栈和公共变量将参数传递给我的函数,而且似乎我丢失了它们之间的数据,因为即使在第一个函数之后,我在“保存”变量中也得到了 0.0 我认为我搞砸了一些关于寻址变量的事情,因为我对 MASM32 语法很陌生,而且它有一些奇怪的限制。虽然也许我只是想打印错误
主文件
extern funcNum1:proto
extern funcNum2:proto
extern funcNum3:proto
public giveVal1,giveVal2
.data?
save dd ?
giveVal1 dd ?
giveVal2 dd ?
.data
array dq 12.0,0.87,9.7,8.64
.code
start:
call main
inkey
exit
main proc
cls
print "List number 27,variant 6",10
lea ecx,array
lea edx,array+24
lea eax,save
call funcNum1
push eax
lea ecx,array+16
push ecx
call funcNum2
pop eax ; save
printf("Result is %f\n",save)
mov esi,dword ptr array
mov dword ptr giveVal2,esi
mov esi,dword ptr array+8
mov dword ptr giveVal1,esi
call funcNum3
fld giveVal1
fld qword ptr [edi]
fxch
fdiv
fstp save
printf("Result is %f\n",save)
ret
main endp
end start
extrn giveVal1:DWORD,giveVal2:DWORD
public funcNum1,funcNum2,funcNum3
.data?
valuef dq ?
reg1 dq ?
reg2 dq ?
.data
value1 dq 53
value2 dq -2
value3 dq 4
.code ; code section
funcNum1 proc
fld qword ptr [ecx]
fld qword ptr [edx]
fdiv
fsin
fstp qword ptr [eax]
ret
funcNum1 endp
funcNum2 proc
pop edx
pop eax ; array[2]
pop ecx ; save
fild value1
fld qword ptr [ecx]
fsub
fstp valuef
finit
fild value2
fld qword ptr [eax]
fmul
fld valuef
fadd
fstp qword ptr [ecx]
finit
push ecx
push edx
ret
funcNum2 endp
funcNum3 proc
fld qword ptr [giveVal1]
fild qword ptr [value3]
fdiv
fld qword ptr [giveVal2]
fsub
fstp giveVal1
ret
funcNum3 endp
end
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)