BIOS之家论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: 活动 交友 discuz
查看: 53444|回复: 337

AMI BIOS模块结构详解 完整版

    [复制链接]

该用户从未签到

发表于 2009-9-8 21:27:51 | 显示全部楼层 |阅读模式
首先在讲AMI BIOS模块结构前
需要向大家说一样东西
就是逻辑地址
逻辑地址的形式如:XXXX:XXXX
其中前四位是段地址   后四位是偏移地址
比如ABCD:1234
物理地址=段地址*10H+偏移地址
所以ABCD:1234的物理地址=ABCDH*10H+1234H=ACF04H
而ACF04H这个物理地址是相对于1M噶地址空间的
如果你的BIOS大小是1M噶话 那么物理地址就是ACF04H
如果BIOS不是1M的话 那么就要对物理地址进行换算
好 有条公式: BIOS文件在WINHEX中的地址 =  BIOS文件相对于1M空间的地址 - 常数
注:常数是根据每个BIOS的大小而确定的   常数=(1024-你BIOS的大小(KB))*1024
比如你的BIOS是512KB的话  那么常数就是  常数=(1024-512)*1024=524288D=80000H
所以ABCD:1234在512KB的BIOS中 BIOS文件在WINHEX中的地址就=ABCDH*10H+1234H-80000H=2CF04H
OK  现在各位应该明白逻辑地址转化为物理地址的方法了


此文BIOS之家已收录:http://www.bios.net.cn/BIOSJS/BIOSjishuwenzhang/6190.html

评分

4

查看全部评分

该用户从未签到

 楼主| 发表于 2009-9-8 21:27:59 | 显示全部楼层
本帖最后由 fjr115 于 2009-9-24 22:49 编辑

用WINHEX打开AMI BIOS可以搜索到AMIBIOSC的字符串
这里隐含很多秘密
如下:(这个BIOS 512KB的)
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
00067FE0   00 00 00 00 00 00 00 00  08 0A 41 4D 49 42 49 4F   ..........AMIBIO
00067FF0   53 43 30 38 30 30 06 CE  21 40 BC 75 0C 00 83 E7   SC0800.?@紆..冪


这里一共20H
具体结构如下:
0-2H                保留供将来使用
3H                   一般都是00
4-5H                BIOS映像版本
8H                   都是08的
9H                   都是0A的 (AMIBIOSC08的长度)
A-13H              AMIBIOSC
14-17H            BIOS 核心版本
18-1BH            BIOS校验位
1C-1DH            第一个模块的偏移地址
1E-1FH             第一个模块的段地址

由此可知 在这个BIOS里面第一个模块的逻辑地址是 E783:000C
所以物理地址=E7830H+000CH-80000H=6783CH
6783CH-8H就是第一个模块的地址了  至于为什么要-8H 你自己看一下就知道了
OK 第一个模块的地址找到了
继续研究一下第一个模块的头部 看看有什么秘密
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
00067830   00 FF FF FF 98 07 00 00  F3 C3 B9 AA 10 00 1B E2
00067840   98 07 08 80 00 00 00 00  01 00 0C 00 20 35 01 00


其中 红色部分的14H就是模块头了
单独提取出来
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
00000000   98 07 00 00 F3 C3 B9 AA  10 00 1B E2 98 07 08 80
00000010   00 00 00 00



0-3H                   模块大小
4-7H                   校验位
8-9H                   下一个模块的偏移地址
A-BH                   下一个模块的段地址
C-DH                   模块大小
EH                       模块ID
FH                       模块属性

由此可知该模块的模块大小是0798H  校验位AAB9C3F3  下一个模块的地址为E21B:0010  模块ID为08
从此可以得知下一个模块的位置
如此类推
......................
直到最后一个模块

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
00000FD0   44 00 00 00 92 9F 03 15  FF FF FF FF 44 00 80 80
00000FE0   00 00 00 00 07 00 10 02  01 00 00 14 00 20 08 01


红色的就是模块头
最后一个模块的模块头的8-BH都是FF FF FF FF的  表示是最后一个模块了
OK    AMI BIOS模块机构详解到此完毕

评分

2

查看全部评分

该用户从未签到

 楼主| 发表于 2009-9-8 21:28:08 | 显示全部楼层
占2楼 OK

该用户从未签到

发表于 2009-9-8 21:59:50 | 显示全部楼层
很高级的理论与实际相结合教程!感谢楼主分享!
  • TA的每日心情
    开心
    2017-5-13 13:26
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2009-9-8 22:06:32 | 显示全部楼层
    版主还没编辑完,先关注一下。

    该用户从未签到

    发表于 2009-9-8 23:15:19 | 显示全部楼层
    虽然看不明白,但一定要支持。

    该用户从未签到

    发表于 2009-9-8 23:57:32 | 显示全部楼层
    真是“茅塞顿开”!
    现在最想知道的是“模块的校验位”是怎样计算的!
  • TA的每日心情
    慵懒
    昨天 11:46
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    发表于 2009-9-9 00:00:11 | 显示全部楼层
    高啊!!!哥哥你非常敬业,我非常佩服。

    该用户从未签到

    发表于 2009-9-9 09:35:30 | 显示全部楼层
    此贴技术贴,学习
  • TA的每日心情
    开心
    2017-4-6 21:54
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-9-9 09:46:30 | 显示全部楼层
    支持~~~
    等完整篇~~~~~~~~~
    *滑动验证:
    您需要登录后才可以回帖 登录 | 马上注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|BIOS之家-国内专业BIOS技术网站- (已创建17年) ( 蒙ICP备12000608号-1

    GMT+8, 2017-7-23 14:49 , Processed in 0.242813 second(s), 16 queries , File On.

    Powered by Discuz! X3.3 Licensed

    © 2001-2017 Comsenz Inc.

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