EBP寻址相关练习

  • 编写一个函数,能够实现任意3个数(DWORD)的加法,参数采用堆栈的方式进行传递,并将结果存储在EAX中。

PUSH 3
PUSH 2
PUSH 1
CALL 41D287
ADD ESP, 0C
...
...
PUSH EBP
MOV EBP, ESP
SUB ESP, 10H
MOV EAX, DWORD PTR SS:[EBP+8]
ADD EAX, DWORD PTR SS:[EBP+C]
ADD EAX, DWORD PTR SS:[EBP+10]
MOV ESP, EBP
POP EBP
RETN
  • 画出函数执行时堆栈的变化(从参数压栈开始画 一行指令对应一个堆栈图)。

堆栈.png

总结: 一个程序执行所分配的内存空间是有限的,所以在进行堆栈的使用后要对空间进行回收,否则调用的函数多了会导致堆栈溢出。 从本节练习中可知,一个函数调用其堆栈使用情况的大致便是这样。

你可能感兴趣的:(EBP寻址相关练习)