call procname procname: push ebp ; preserve base pointer mov ebp, esp ; stack pointer into ebp ; write your assembler code here mov esp, ebp ; restore stack pointer pop ebp ; restore base pointer ret label: ebp 指向何处?为何要入栈? esp 指向何处?是不是指向刚才我push的地址(也即栈顶)? 为何他要mov ebp, esp 再mov esp, ebp, 我认为没必要把esp的内容存到ebp中啊。 |
这是建立一个程序调用时的框架堆栈帧, push ebp ; 建立堆栈帧 mov ebp, esp mov esp, ebp ; 取消堆栈帧 pop ebp |