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

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