Award版Bios内部结构及加载过程简单说明

本文详细介绍了Award BIOS的内部结构,包括BootBlock、主模块的解压缩过程以及ACPI Table的加载。通过代码分析,揭示了BIOS执行的早期步骤,如内存映射、代码跳转和自检过程。此外,还提到了修改BIOS以激活Vista的操作步骤,以及可能遇到的问题,如文件校验和错误、代码修改风险和刷新过程中断等。
摘要由CSDN通过智能技术生成
Award版的Bios在主板中使用非常广泛,文件结构也不是特别复杂,所以用来进行分析还是比较合适的。Award公司的Bios除BootBlock之外的部分都要使用lha压缩后合并到最终的Bios文件中,也就是说最终的Bios文件中只有BootBlock是能直接执行的,其他部分在执行之前都需要进行解压。Award版的Bios中不同模块使用lha文件标准定义中的文件日期部分区分,主模块的识别代号是50000000,其他模块也有自己独特的区分代号,例如:ACPI
Table的代号是40030000。
    
BookBlock部分就在Bios文件的最后68K或128K,机器启动后,BootBolck被映射到F0000-FFFFF(64K)或者E0000-FFFFF(128K),然后机器调用FFFF0处的代码开始Post过程,Bios的这个位置基本都是一条长跳转(至少我还没见过其他类型的)。在完成最基本的初始化之后,BootBlock进入解压缩模块,对Bios的主模块进行完整性校验和解压缩,如果校验失败或者解压缩失败则会跳到BootBlock中的失败处理中,也就是一个最简单的引导模块,这个引导模块通常只支持很少的硬件设备,这个部分存在的意义就是在发现Bios文件出现问题后有一个恢复的机会,但如果是主模块内部出现问题而不是文件封装出现问题,这部分的判断是不可能起作用的。
    下面配合代码对上面的说明进行解释。代码来自Abit的kN9主板V18版本Bios(网上随便找的比较新的Award Bios)
seg000:FFF0     jmp     far ptr loc_FE05B
    这个就是Bios执行的第一句代码,只是简单的跳到F000:E05B处继续执行
seg000:E05B     jmp     far ptr loc_FE200

seg000:E200     mov     gs, dx
seg000:E202     cli
seg000:E203     cld
seg000:E204     mov     ax, cs
seg000:E206     mov     ss, ax
seg000:E208     assume ss:nothing
seg000:E208     mov     ecx, 1Bh
seg000:E20E     rdmsr
seg000:E210     test    ax, 100h
seg000:E213     jz      short $+2
seg000:E215     mov     sp, 0E21Bh
seg000:E218     jmp     loc_F7360  
;这样的代码在跳转后的代码执行后会到sp内容指向的位置处继续执行,此处就是到E21D处继续执行。后面还有很多地方都是这样的跳转。
seg000:E218 ;
---------------------------------------------------------------------------
seg000:E21B     dw 0E21Dh
seg000:E21D ;
---------------------------------------------------------------------------
seg000:E21D     mov     sp, 0E223h
seg000:E220     jmp     loc_FF600
seg000:E220 ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值