mov offset和lea的區別


mov offset和lea的區別

全局變量取地址用mov offset

例如:mov     dword ptr [ebp-14h],offset ConsoleTest+0x94620(00494620)

局部變量取地址用lea

例如:

0042fb24 8d45f8          lea     eax,[ebp-8] 
0042fb27 8945ec          mov     dword ptr [ebp-14h],eax//EBP-8這個變量的地址存入變量[ebp-14h]

其實區別就是offset的第二個參數是地址,lea第二個參數是寄存器。

 

LEA SI,STR與MOV SI,OFFSET STR最大區別在於OFFSET STR是一條偽指令,與SEG DATA之類相似,它在編譯和連接過程被賦給一個值,你可以把它看成一個立即數,LEA SI,STR是把STR的內存指針賦給SI,你可以把它看成內存變量。另外,MOV SI,OFFSET STR是一條2字節立即尋址指令,LEA SI,STR是一條3字節內存尋址指令,后者雖然有比較靈活的尋址方式,但前者具有更小的容量和更快的執行速度,推薦盡可能使用MOV SI,OFFSET STR。當然,OFFSET后面只能是標號或變量名。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM