![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-19 06:34 |
共 47,814 主题排行 / 349,908 发帖 / 今日 1 篇 / 48,259 会员排行 |
| DOS疑难解答 & 问题讨论 (解答室) » 如何用DOS恢复BIOS出厂设置 |
| 可打印版本 4,578 / 17 |
| 第1楼 w909525 | 发表于 2007-09-22 11:13 |
| 初级用户 发帖 34 积分 98 | |
|
如何用DOS恢复BIOS出厂设置 当机器出现一些莫名其妙的问题时,将BIOS恢复到出厂设置经常会有很好的效果,那么请问有没有没办法自动恢复BIOS的出厂设置呢?请高手指教
|
|
| 第2楼 kinglin | 发表于 2007-09-22 12:02 |
| 初级用户 发帖 28 积分 62 | |
|
我是这样做的
1.首先读取128字节的BIOS数据(出厂设置),程序如下: #include "stdio.h" #include "dos.h" #include "conio.h" void main() { unsigned char cmos[128]; FILE *fp; int i,j; for(i=0;i<16;i++){ for(j=0;j<8;j++){ outportb(0x70,i*8+j); cmos[i*8+j]=inportb(0x71); printf("%02X ",cmos[i*8+j]); } printf("\n"); } printf("----End----"); /* 将显示的数据存入文件CMOS.DAT */ /* fp=fopen("CMOS.DAT","wb"); fwrite(&cmos[0],1,128,fp); fclose(fp); */ getch(); } 2.将以上所示代码写入下面的cmos[128]数组,下面程序将比较现在CMOS设置,与默认设置是否相同,如不同,则将CMOS[128]写如BIOS中,然后重新启动计算机. /*重新启动计算机*/ void far Restart(void) { __emit__(0XEA,0X00,0X00,0XFF,0XFF); } void main() { int i,err_flag; unsigned char ch; /* 我的计算机默认CMOS数据,改为你的*/ static unsigned char cmos[128]={0X15,0X01,0X02,0X38,0X14,0X13,0XF1,0X20,0X97,0X07,0X26,0X02,0X50,0X80,0X00,0X00, 0X00,0XC0,0X00,0X02,0X07,0X80,0X02,0XC0,0XFF,0X2F,0X2F,0X50,0XDD,0X5D,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X04,0XF2, 0XC0,0XFF,0X20,0X80,0X1F,0XDF,0X3F,0XD7,0X43,0X02,0X07,0X07,0XB0,0XCD,0XE9,0X11, 0X56,0X9F,0XA0,0X6C,0XFD,0XFF,0XDB,0XF7,0X07,0X1C,0XF8,0X0D,0X40,0X04,0XE2,0X44, 0XDD,0X87,0X00,0X60,0X17,0XF7,0X01,0XA0,0XDF,0X78,0X00,0X00,0XE0,0X3F,0XFF,0XFE, 0X77,0XBF,0XF3,0XEF,0XFF,0X7F,0XFF,0X2F,0XF4,0X01,0X08,0XFF,0XFF,0XF3,0X01,0X20, 0X2F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XEF,0XFF,0XFF,0X1E,0X35,0XF7}; /*====== Read cmos ======*/ for(i=16,err_flag=0;i<128;i++){ /*CMOS数据比较,下面的比较是我所需要的,可根据具体需要改变*/ if((i==0X3C)||(i==0X3E)||(i==0X40)||(i==0X44)||(i==0X4B)||(i==0X4C)||(i==0X4D)||(i==0X54)){ outportb(0X70,i); ch=inportb(0X71); if(ch!=cmos[i]) { err_flag=1; break; } } } if(err_flag){ for(i=16;i<128;i++){ outportb(0X70,i); outportb(0X71,cmos[i]); } Restart(); } } ============================================= 附:我的主板我所需要的CMOS数据分析.你可改变BIOS设置,来得到CMOS数据的变化 BIOS版本:Award Modular BIOS v4.51PG 起始字节:0 注:共128字节,后128字节与前128字节内容相同 偏移量 功能 数值 选项 第 60 字节低4位 Boot Sequence 0 A,C,SCSI 1 C,A,SCSI 2 C,CDROM,A 3 CDROM,C,A 4 D,A,SCSI 5 E,A,SCSI 6 F,A,SCSI 7 SCSI,A,C 8 SCSI,C,A 9 C only A LS/ZIP,C 第 60 字节高4位 Quick Power On Self Test A Disabled B Enabled 第 62 字节低4位 Halt On 8 All Error 9 No Error A All,But Keyboard 第 64 字节高4位 Flat Panel Resolution 5 640X480 6 800X600 - 1024X768 第 68 字节低4位 USB Controller C Disabled D Enabled 第 75 字节高4位 Onboard Serial Port1 0 Disabled 1 3F8/IRQ4 2 2F8/IRQ3 3 3E8/IRQ4 4 2E8/IRQ3 5 Auto 第 76 字节低4位 Onboard Serial Port2 0 Disabled 1 3F8/IRQ4 2 2F8/IRQ3 3 3E8/IRQ4 4 2E8/IRQ3 5 Auto 第 77 字节 Onboard Parallel Port 04 Disabled -- 3BC/IRQ7 -- 378/IRQ7 -- 278/IRQ5 第 84 字节高4位 Display Status 1 Both 5 CRT - LCD |
|
| 第3楼 w909525 | 发表于 2007-09-22 20:06 |
| 初级用户 发帖 34 积分 98 | |
|
大哥,实在太谢谢你了
但是小弟的知识太差子,不明白你给我的代码要怎么用,我只是想单纯的去恢复到出厂设置不用去比较的,请大哥再帮我想想. 也说是我当我执行完后就能恢复,不用比较,再次谢谢 |
|
| 第4楼 kinglin | 发表于 2007-09-23 08:08 |
| 初级用户 发帖 28 积分 62 | |
|
这个压缩包里有两个可执行文件:
RCMOS.EXE 读CMOS数据,它将生成存有CMOS数据的CMOS.DAT文件 WCMOS.EXE 将CMOS.DAT中的数据写回到CMOS 注意:RCMOS只执行一次,目的是备份正常的CMOS配置 以后,当需要恢复时,仅需执行WCMOS 这两个程序在我的计算机上调试通过! ========================================= 另,还是希望楼主研究研究我上次回复的东东,如果研究好的话,在AUTOEXEC.BAT中调用编译好的程序,它将自动识别,从此不用人工干预. 附件 读写CMOS.rar (12.29 KiB) |
|
| 第5楼 kinglin | 发表于 2007-09-23 08:11 |
| 初级用户 发帖 28 积分 62 | |
Originally posted by kinglin at 2007-9-23 08:08 AM: ===此程序只适用于DOS=== 因为重新启动函数在Windows系统下,不能正常运行 |
|
| 第6楼 w909525 | 发表于 2007-09-23 11:33 |
| 初级用户 发帖 34 积分 98 | |
|
谢谢,我一定会的。二楼的兄弟在吗,能不能聊聊呀
[ Last edited by w909525 on 2007-9-23 at 11:40 AM ] |
|
| 第7楼 w909525 | 发表于 2007-09-23 13:33 |
| 初级用户 发帖 34 积分 98 | |
|
我还有个问题请指教,如果我把BIOS程序备份出来变成ROM或BIN档,请问我要怎么样才能读出你说的那些字节呢,或者可以在WINWOS下直接用工具读到,谢谢
还有你哪个程序是用C写的吗 |
|
| 第8楼 kinglin | 发表于 2007-09-24 09:10 |
| 初级用户 发帖 28 积分 62 | |
|
在ROM或BIN中如何得到这些字节,我也没研究过.上面的程序是用C编的,是直接读写端口.你到这个网站看看是否对你有帮助.
http://www.bios.net.cn/ |
|
| 第9楼 w909525 | 发表于 2007-09-24 18:01 |
| 初级用户 发帖 34 积分 98 | |
|
再请教个问题,就是我用你给我的写CMOS的程序,我发现只要执行它即时没有任何文件就能恢复到出厂设置,不知道这样做行不行,
|
|
| 第10楼 w909525 | 发表于 2007-09-24 21:19 |
| 初级用户 发帖 34 积分 98 | |
|
樓上的在嗎
|
|
| 第11楼 linkmagic | 发表于 2007-09-29 20:02 |
| 新手上路 发帖 8 积分 17 | |
|
太难了
|
|
| 第12楼 scrate | 发表于 2007-09-30 10:01 |
| 初级用户 发帖 73 积分 160 | |
|
基本的硬件操作。适用于什么情况下呢?
如果lz只是要恢复bios默认值,你的主板还能启动的话,那么拔主板电池就够了啊。 |
|
| 第13楼 w909525 | 发表于 2007-10-02 12:29 |
| 初级用户 发帖 34 积分 98 | |
|
楼上说的对呀,关键是我不想那么做,呵呵,
|
|
| 第14楼 piliwang | 发表于 2007-10-15 15:20 |
| 新手上路 发帖 7 积分 13 | |
|
可以用RTC。EXE 自动还原BIOS出厂设置
由于不知道怎么上传,所以就没有上传 |
|
| 第15楼 wangymail | 发表于 2007-10-15 16:02 |
| 新手上路 发帖 4 积分 6 | |
|
Windows! 直接进CMOS 按F5 -->Enter-->F10就行了,为什么搞的那么复杂啊!
|
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |