堆栈之PUSH指令&POP指令


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

 

  

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM