286以上微机开机时系统都要检查储存在CMOSRAM中的信息,诸如密码,内存信息,驱动器配置及日期和时钟等数据,并以此为依据安排系统的配置。如果系统遭受病毒攻击或由于误操作等原因造成CMOS数据的丢失,就会影响系统的正常工作。因此有必要对CMOS的数据留底,以备及时恢复。
通过对112(70H)和113(71H)号端口的操作,可读写出CMOS RAM中的数据。如果将读出的数据保存在CMOS DAT文件中,则当要恢复此数据时,再通过这两个端口写入CMOS RAM。
下面列出了以BASIC语言写成的源程序,初学者较易理解,可用 TURBO BASIC或QBASIC等编译为EXE文件直接执行,也可稍加修改加上行标号后在GWBASIC上运行。
2
CLS
PRINT"备份及恢复CMOS数据程序"
10 PRINT"1.备份CMOS数据"
PRINT"2.恢复CMOS数据"
INPUT"请键入所选序号:
SELECT CASE A
CASE 1
GOSUB 100
END
CASE 2
GOSUB 200
END
CASE ELSE
CLS
PRINT"选择有误,请重选!"
GOTO 10
END SELECT
100 REM SAVECMOS
CLS
SHELL"IF EXIST CMOS.BAK DEL CMOS.BAK"
SHELL"IF EXIST CMOS.DAT REN CMOS.DAT"
OPEN"CMOS.DAT"FOR APPEND AS #l
FOR I=0 TO 127
OUT 112,I
P=ASC(CHR$(INP(113)))
WRITE #1,P
NEXT 1
CLOSE #l
CLS
PRINT"CMOS数据已备份完毕"
RETURN
200 REM REWTCMOS
CLS
OPEN"CMOS.DAT" FOR INPUT AS #1
FOR I=0 TO 127
INPUT #l,P
OUT 112,I
OUT 113,P
NEXT I
CLOSE #l
CLS
PRINT"请重新设定当前日期和时间"
SHELL"DATE"
CLS
SHELL"TIME"
CLS
PRINT"CMOS数据已恢复完毕"
RETURN
(李东方)