堆棧之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