|
w909525
初级用户
积分 98
发帖 34
注册 2007-3-9
状态 离线
|
『楼 主』:
如何用DOS恢复BIOS出厂设置
当机器出现一些莫名其妙的问题时,将BIOS恢复到出厂设置经常会有很好的效果,那么请问有没有没办法自动恢复BIOS的出厂设置呢?请高手指教
|
|
2007-9-22 11:13 |
|
|
kinglin
初级用户
积分 62
发帖 28
注册 2007-7-3
状态 离线
|
『第
2 楼』:
我是这样做的
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
|
|
2007-9-22 12:02 |
|
|
w909525
初级用户
积分 98
发帖 34
注册 2007-3-9
状态 离线
|
『第
3 楼』:
大哥,实在太谢谢你了
但是小弟的知识太差子,不明白你给我的代码要怎么用,我只是想单纯的去恢复到出厂设置不用去比较的,请大哥再帮我想想.
也说是我当我执行完后就能恢复,不用比较,再次谢谢
|
|
2007-9-22 20:06 |
|
|
kinglin
初级用户
积分 62
发帖 28
注册 2007-7-3
状态 离线
|
『第
4 楼』:
这个压缩包里有两个可执行文件:
RCMOS.EXE 读CMOS数据,它将生成存有CMOS数据的CMOS.DAT文件
WCMOS.EXE 将CMOS.DAT中的数据写回到CMOS
注意:RCMOS只执行一次,目的是备份正常的CMOS配置
以后,当需要恢复时,仅需执行WCMOS
这两个程序在我的计算机上调试通过!
=========================================
另,还是希望楼主研究研究我上次回复的东东,如果研究好的话,在AUTOEXEC.BAT中调用编译好的程序,它将自动识别,从此不用人工干预.
附件
1: 读写CMOS.rar (2007-9-23 08:08, 12.29 K,下载次数: 64)
|
|
2007-9-23 08:08 |
|
|
kinglin
初级用户
积分 62
发帖 28
注册 2007-7-3
状态 离线
|
『第
5 楼』:
Quote: | Originally posted by kinglin at 2007-9-23 08:08 AM:
这个压缩包里有两个可执行文件:
RCMOS.EXE 读CMOS数据,它将生成存有CMOS数据的CMOS.DAT文件
WCMOS.EXE 将CMOS.DAT中的数据写回到CMOS
注意:RCMOS只执行一次,目 ... |
|
===此程序只适用于DOS===
因为重新启动函数在Windows系统下,不能正常运行
|
|
2007-9-23 08:11 |
|
|
w909525
初级用户
积分 98
发帖 34
注册 2007-3-9
状态 离线
|
『第
6 楼』:
谢谢,我一定会的。二楼的兄弟在吗,能不能聊聊呀
[ Last edited by w909525 on 2007-9-23 at 11:40 AM ]
|
|
2007-9-23 11:33 |
|
|
w909525
初级用户
积分 98
发帖 34
注册 2007-3-9
状态 离线
|
『第
7 楼』:
我还有个问题请指教,如果我把BIOS程序备份出来变成ROM或BIN档,请问我要怎么样才能读出你说的那些字节呢,或者可以在WINWOS下直接用工具读到,谢谢
还有你哪个程序是用C写的吗
|
|
2007-9-23 13:33 |
|
|
kinglin
初级用户
积分 62
发帖 28
注册 2007-7-3
状态 离线
|
|
2007-9-24 09:10 |
|
|
w909525
初级用户
积分 98
发帖 34
注册 2007-3-9
状态 离线
|
『第
9 楼』:
再请教个问题,就是我用你给我的写CMOS的程序,我发现只要执行它即时没有任何文件就能恢复到出厂设置,不知道这样做行不行,
|
|
2007-9-24 18:01 |
|
|
w909525
初级用户
积分 98
发帖 34
注册 2007-3-9
状态 离线
|
|
2007-9-24 21:19 |
|
|
linkmagic
新手上路
积分 17
发帖 8
注册 2007-9-29
状态 离线
|
|
2007-9-29 20:02 |
|
|
scrate
初级用户
积分 160
发帖 73
注册 2007-9-13
状态 离线
|
『第
12 楼』:
基本的硬件操作。适用于什么情况下呢?
如果lz只是要恢复bios默认值,你的主板还能启动的话,那么拔主板电池就够了啊。
|
|
2007-9-30 10:01 |
|
|
w909525
初级用户
积分 98
发帖 34
注册 2007-3-9
状态 离线
|
『第
13 楼』:
楼上说的对呀,关键是我不想那么做,呵呵,
|
|
2007-10-2 12:29 |
|
|
piliwang
新手上路
积分 13
发帖 7
注册 2007-9-26
状态 离线
|
『第
14 楼』:
可以用RTC。EXE 自动还原BIOS出厂设置
由于不知道怎么上传,所以就没有上传
|
|
2007-10-15 15:20 |
|
|
wangymail
新手上路
积分 6
发帖 4
注册 2007-10-15
状态 离线
|
『第
15 楼』:
Windows!
直接进CMOS 按F5 -->Enter-->F10就行了,为什么搞的那么复杂啊!
|
|
2007-10-15 16:02 |
|
|