其实这只是一个广告 :) 下面是广告时间: 你是否为ms的丑陋的FDISK感到头痛?或者在为没有一款可心的多OS引导工具发愁?别急,下面就让我来帮助你把分区工具集成到BIOS中,以后你不用引导系统就可以对硬盘分区了,hoho~~ 1、介绍: 以前一直对BIOS感到神秘莫测,因为他掌管了computer的启动大权,各种设备要听他调度,后来捷波主板提供了一个恢复精灵,据说对删除文件、format/fdisk系统都能恢复,中文版本的,还听说是一大卖点。于是一激动就给人家写了个mail,结果人家说商业技术机密,就不理俺了。 本打算反汇编看看,但偶用的OS都是WIN32下的,居然无法反汇编,而且也找不到DOS下的反汇编工具了,另外这个从BIOS中分离出来的.dat文件反汇编也不会正常。(谁有好办法不防告知一声)后来看到有人在bios中居然集成了分区工具,才知道写能运行在BIOS中的软件的格式和正常的略有不同,为了能让大家体会一下这个工具的方便之处和使用方法,我简单说明如下: bfdisk (Bios Fdisk) 是一个多系统的分区工具,他可以支持划分15个分区安装15个操作系统,可以设置在每个系统启动的后能看到哪些分区。软件集成分区、多系统引导的功能,这个以ISAROM格式编写的软件还支持高分辩率的LOGO,强!还有,这是全中文的界面。 下载:http://nfans.net/tmp/bfdisk.rar 下载完成后,可以看到压缩包中包括bfdisk.rom、bfdisk.com两个文件,我们需要将bfdisk.rom这个文件写入BIOS中。BFDISK.com是BFDISK.rom的实模式下的版本,他们的功能是一样的。通常我们利用bfdisk.com来检测一下显卡,看看是否支持VESA1.0。如果能看到出现的画面就可以确定显卡测试通过。 在测试完成后利用AWARD的工具进行BIOS的修改,首先把主板上的BIOS读出来: 推荐用winflash.exe来读取,这个软件上手比较快,而且能运行在win9x上。执行后点保存的按钮,在出来的对话框中起个名字,点保存后出现save bios窗口,点击backup按钮即可。(我这里把BIOS保存为815ep.BIN) 然后用cbrom.exe来进行修改,用下面的指令将bfdisk.rom加入到bios文件中: CBROM 815ep.bin /ISA BFDISK.ROM 最后在用winflash.exe 来将BIOS文件写回主板。 方法是点击工具栏上面保存后面的按钮(第三个),在出来的对话框中找到刚才修改后的BIOS文件。点击打开按钮后会出现新的对话框update bios,点UPDATE按钮即可。(通常所谓的BIOS升级就是如此简单的,我们通过此方法可以集成你想集成的其他的BIOS模块) 然后重新开机,在硬件检测完成后就会看到一个漂亮的LOGO,在这个时候按CTRL+F键,就会进入程序的主界面。 需要注意的是该软件只能运行award bios主板,显卡支持VESA1.0,主板支持8.4G以上硬盘的配置,还有利用ISAROM来使用的工具只能加载一个,就是说如果你的机子中有恢复精灵的话,在使用本软件后恢复精灵将会失效。 另外,如果用该软件对硬盘进行分区并进行多系统引导了,不要用PQMAGIC之类的软件来重新移动硬盘分区,很简单这会造成引导程序出错。 have fun ~ 如果你不小心改坏了导致无法开机,别怪我。。。 可以通过这个方法修复回来,利用sys a:作一张引导软盘。然后拷贝awdflash.exe 和没有修改的815ep.bin到软盘上,在软盘的autoexec.bat写上awdflash 815ep.bin,软盘启动成功后会两次车,然后按“Y”键,就会将没修改的815ep.bin写回主板。 2、原理: 上面已经说出,该工具是通过ISAROM格式编写的,只要遵守ISAROM的规范,就可以写出能在BIOS中使用的工具,下面是一个hello world !写回主板后开机会显示hello world !提示。 有如下代码: ============================================================= ;FILENAME BHW.ASM ;MAMS6.0 BHW ;LINK/T BHW .Model Tiny,C .486 .code InitCode PROTO printf PROTO :WORD,:WORD GetKey PROTO org 0h start: DW 0AA55h ;扩展BIOS标志 DB 40h ;本程序大于32K值为80H,否则为40H invoke InitCode ;入口标志 retf ;远程返回 Message db 0dh,0ah,'hello world!',0dh,0ah,0 InitCode proc invoke printf,cs,addr Message invoke GetKey ret InitCode endp printf proc uses ds MemSeg:WORD,address:WORD push MemSeg pop ds lea si,address xor bx,bx mov ah,0Eh cld lodsb .while al != 0 int 10h lodsb .endw ret printf endp GetKey proc @@: mov ah,1 int 16h jz @B xor ax,ax int 16h ret GetKey endp end start ============================================================= 利用本文提供的方法,你可以写出能在BIOS中运行的程序,如果具体想编写的话,最好要参考PNPBios的资料来编写。 本文资料和技术均来自周锐光,偶不过学习了一下。感谢周兄的资料和奉献! |