中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: 如何用DOS恢复BIOS出厂设置 上一主题 | 下一主题
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
状态 离线
『第 8 楼』:  

在ROM或BIN中如何得到这些字节,我也没研究过.上面的程序是用C编的,是直接读写端口.你到这个网站看看是否对你有帮助.
http://www.bios.net.cn/

2007-9-24 09:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
w909525
初级用户





积分 98
发帖 34
注册 2007-3-9
状态 离线
『第 9 楼』:  

再请教个问题,就是我用你给我的写CMOS的程序,我发现只要执行它即时没有任何文件就能恢复到出厂设置,不知道这样做行不行,

2007-9-24 18:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
w909525
初级用户





积分 98
发帖 34
注册 2007-3-9
状态 离线
『第 10 楼』:  

樓上的在嗎

2007-9-24 21:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
linkmagic
新手上路





积分 17
发帖 8
注册 2007-9-29
状态 离线
『第 11 楼』:  

太难了

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
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: