1. 程式人生 > >彙編中Enter和Leave指令

彙編中Enter和Leave指令

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

Enter的作用相當==push ebp和mov ebp,esp

這後面兩句大家很熟悉吧?函式開始一般都是這兩句

Leave的作用相當==mov esp,ebp和pop ebp

而這後面這兩句也很常見,函式呼叫完後一般的用到

以上的Enter和leave的作用分別函式開始和結束

Win32彙編中區域性變數的使用方法可以解釋一個很有趣的現象:在DOS彙編的時候,如果在子程式中的push指令和pop指令不配對,那麼返回的時候ret指令從堆疊裡得到的肯定是錯誤的返回地址,程式也就死掉了。但在Win32彙編中,push指令和pop指令不配對可能在邏輯上產生錯誤,卻不會影響子程式正常返回,原因就是在返回的時候esp不是靠相同數量的pushpop指令來保持一致的,而是靠leave指令從儲存在ebp中的原始值中取回來的,也就是說,即使把esp改得一塌糊塗也不會影響到子程式的返回,當然,竅門就在ebp,把ebp改掉,程式就玩完了

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述