1.PUSH指令
(1) PUSH指令的功能:
- 向堆栈中压入数据
- 修改栈顶指针ESP寄存器
***如果向未使用的堆栈中写入数据,写完后还需要根据写入的数据长度,修改ESP(栈指针寄存器)的值(SUB\ADD等指令),让栈指针指向上一步写入数据的位置的上方,防止已经写入的指令被后来再写入的数据覆盖掉。
(2) PUSH指令的使用:
PUSH指令使用前,栈指针未使用的内存:
使用三次PUSH指令:
结果:
这里PUSH指令的作用相当于执行了向栈中压入数据,并且自动修改了ESP的值
PUSH指令就相当于一个MOV加一个SUB实现了向栈中压入值,并修改了栈指针的值
2 POP指令
(1)功能:
POP指令的作用是把栈中的值取出放到对应的位置
(2) 使用
① 栈指针对应位置及数据:
② POP指令:
③ 执行结束:
可以看到POP指令将栈指针对应的数据写入了相应的位置,并且栈指针向下移(值增大)
即:POP指令相当于一个MOV指令加一个ADD指令