push ebp
mov esp,ebp
esp是堆棧指針
ebp是基址指針
這兩條指令的意思是將棧頂指向ebp的地址
---------------------------------------------------------------
?例如:
push ebp ;ebp入棧
mov ebp, esp ;因為esp是堆棧指針,無法暫借使用,所以得用ebp來存取堆棧
sub ? esp, 4*5 ;下面的wsprintf一共使用了5個參數,每個參數占用4個字節,所以要入棧4*5個字節
push 1111
push 2222
push 3333
push offset szFormat
push offset szOut
call wsprintf ;調用wsprintf
add esp, 4*5 ;堆棧使用完畢,“還”回4*5個字節給系統
...
mov esp, ebp ;恢復esp的值
pop ebp ;ebp出棧
ret
主要是用來保存/恢復堆棧,以便傳遞參數給函數。
在MASM里面,有一條更方便的語句,就是invoke, 使用它后,你就不用自己做這些事情了。
---------------------------------------------------------------
esp始終指向棧頂,ebp是在堆棧中尋址用的
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
