『第 2 楼』:
 
 
使用 LLM 解释/回答一下
  
我是这样做的 
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 
 
    
 
  
 |