飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4142|回复: 4

汇编语言问题!

[复制链接]
  • TA的每日心情
    开心
    2018-6-4 20:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2005-3-9 17:56:42 | 显示全部楼层 |阅读模式
    请问基址指针BP一般用来干什么的?我看书里面说它是表示堆栈段中的基地址,但SS不是已经表示堆栈段的基地址了吗?这就是多余了吗?请大哥们帮帮我解释一下!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-2-26 08:32
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2006-1-15 00:49:14 | 显示全部楼层
    我是小弟,在学汇编还没入门,不知下面的假释对你有用吗?


    EBP是"基址指针"(BASE POINTER), 它最经常被用作高级语言函数调用的"框架指针"(frame pointer). 在破解的时候,经常可以看见一个标准的函数起始代码:
       
       push ebp  ;保存当前ebp
       mov  ebp,esp  ;EBP设为当前堆栈指针
       sub esp, xxx  ;预留xxx字节给函数临时变量.
       ...
       
       这样一来,EBP 构成了该函数的一个框架, 在EBP上方分别是原来的EBP, 返回地址和参数. EBP下方则是临时变量. 函数返回时作 mov esp,ebp/pop ebp/ret 即可.

    SS(STACK SEGMENT)指定当前堆栈段. ESP 则指出该段中当前的堆栈顶. 所有push/pop 系列指令都只对SS:ESP指出的地址进行操作.
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-1-15 09:51:04 | 显示全部楼层
    原帖由 wzwgp 于 2006-1-15 00:49 发表
    我是小弟,在学汇编还没入门,不知下面的假释对你有用吗?


    EBP是"基址指针"(BASE POINTER), 它最经常被用作高级语言函数调用的"框架指针"(frame pointer). 在破解的时候,经常可以看见一 ...

    :D 解释得不错。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-1-15 21:41:36 | 显示全部楼层
    我是没基础的人 根本就没办法理解!~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-6-12 21:05:52 | 显示全部楼层
    我学过单片机,但还是看不太懂!!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表