32位汇编自定义子函数的返回值问题
请问自己做的子函数可像系统提供的API函数一样可以返回一个有用的返回值
如果可以的该怎么搞,最好有个例子。谢谢了!
问题点数:20、回复次数:3Top
1 楼mydo(侯佩|hopy|ks)回复于 2005-11-22 12:24:22 得分 20
.386
.model flat,stdcall
option casemap :none
include h:\masm32\include\windows.inc
include h:\masm32\include\user32.inc
include h:\masm32\include\kernel32.inc
includelib h:\masm32\lib\user32.lib
includelib h:\masm32\lib\kernel32.lib
.data
buf db 256 dup (?)
.code
fuc proc _val0,_val1
local @sum
pushad
mov eax,_val0
add eax,_val1
mov @sum,eax
popad
mov eax,@sum
ret
fuc endp
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
start:
invoke fuc,12345,67890
;now the return value is in EAX
invoke ExitProcess,NULL
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
end startTop
2 楼mblzds(想学但人又懒)回复于 2005-11-22 14:40:54 得分 0
哦!就是把你想返回的赋给EAX就可以啊!去实践看看!谢谢楼上那位大哥!Top
3 楼mblzds(想学但人又懒)回复于 2005-11-22 15:45:48 得分 0
呵呵!原来是利用现场保护的的原理,对存储返回值的寄存器不进行保护。Top




