关闭

汇编的Enter, leave, return 指令

标签: 汇编存储
2380人阅读 评论(0) 收藏 举报
分类:

enter的用法:

enter   8, 3                   ;就是申请8个存储单元(在堆栈中),特权为3

http://www.cnblogs.com/keepfocus/archive/2011/09/15/2176925.html
1. enter等价于:
push ebp
mov ebp,  esp
在函数的入口时常用。

ENTER   n   申请局部变量,相当于
push    bp
mov     bp,   sp
sub     sp,   n

2. leave等价于:
mov esp,  ebp
pop ebp

 leave   与   ENTER   配对使用

 

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

一段常见的代码格式如下:

.text:00401450 push    ebp
.text:00401451 mov     ebp, esp
.text:00401453 sub     esp, 18h
....
.text:0040146E call    sub_401B10
.text:00401473 mov     eax, 1
.text:00401478 mov    esp,   ebp
                         pop    ebp
                         xor    eax,  eax
.text:00401479 retn    0Ch
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

用enter和leave替代了以后,就可以变成这个样子。
.text:00401450 enter
.text:00401453 sub     esp, 18h
...
.text:0040146E call    sub_401B10
.text:00401473 mov     eax, 1
.text:00401478 leave
                         xor eax, eax
.text:00401479 retn    0Ch

 

 

return   语句有以下几种
        ret               默认为NEAR,在PROC中由PROC属性决定
        retn             强制NEAR
        retf             强制FAR
        ret     n         默认为NEAR,在PROC中由PROC属性决定,同时SP   +=   n
        retn   n         强制NEAR,同时SP   +=   n
        retf   n         强制   FAR,同时SP   +=   n
        iret             中断程序返回
  

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1296768次
    • 积分:17374
    • 等级:
    • 排名:第555名
    • 原创:427篇
    • 转载:268篇
    • 译文:0篇
    • 评论:188条
    常用网址
    博客专栏
    最新评论