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指令