1、 什么是堆栈?
1) 就是一块内存,操作系统在程序启动的时候已经分配好
的,供程序执行时使用。
2) 和数据结构的堆栈无关。
3) 查看堆栈。
2、 栈指针寄存器
ESP中存储了当前的堆栈用到哪里了
3、 PUSH指令:
功能:
<1> 向堆栈中压人数据
<2> 修改栈顶指针ESP寄存器
指令格式:
1、PUSH r32
2、PUSH r16
3、PUSH m16
4、PUSH m32
5、PUSH imm8/imm16/imm32
Push指令相当于:例如Push r32,向栈中压入r32的时候,会修改ESP的值;相当于mov dword ptr ss:[esp],r32 sub esp,4
4、 POP指令:
功能:
<1> 将栈顶数据存储到寄存器/内存
<2> 修改栈顶指针ESP寄存器
指令格式:
1、POP r32
2、POP r16
3、POP m16
4、POP m32
Pop指令相当于:例如Pop r32,在pop执行的时候会把栈顶的数据弹出放到r32寄存器中,然后esp的值加4;相当于;mov r32,dword ptr ss:[esp] add esp 4