jmp

  用jmp实现函数,需要再用jmp调回来,且不可重复

call

  用call实现函数,并且在使用后能跳回来继续下一行指令

 

如实现两个整数的加法

0x00186784  mov ecx,1

0x00186788  mov edx,1

0x0018678C  call 0x0018679C  记录函数的头地址

……

0x0018679C  add ecx,edx  以下三行为函数

0x001867A0  mov eax,ecx

0x001867A4  ret      此行返回到call的下一行

 

如果参数过多,利用堆栈

  将过多的参数压入栈中,使用函数时在取出来用

 

如将计算1+2+3+4+5

push 1

push 2

push 3

push 4

push 5

call m

……

mov eax,dword ptr ds:[esp+4]

mov eax,dword ptr ds:[esp+8]

mov eax,dword ptr ds:[esp+12]

mov eax,dword ptr ds:[esp+16]

mov eax,dword ptr ds:[esp+20]

ret

 

版权声明:本文为uestc2017zh原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/uestc2017zh/p/12337292.html