用BASIC程序保留和恢复CMOS设置

🏠 首页 《无线电》杂志 1995年 🔗 第8期 🔗 第34页 分类:无线电技术自学经验交流 🔗 李东方 🔗

286以上微机开机时系统都要检查储存在CMOSRAM中的信息,诸如密码,内存信息,驱动器配置及日期和时钟等数据,并以此为依据安排系统的配置。如果系统遭受病毒攻击或由于误操作等原因造成CMOS数据的丢失,就会影响系统的正常工作。因此有必要对CMOS的数据留底,以备及时恢复。

通过对112(70H)和113(71H)号端口的操作,可读写出CMOS RAM中的数据。如果将读出的数据保存在CMOS DAT文件中,则当要恢复此数据时,再通过这两个端口写入CMOS RAM。

下面列出了以BASIC语言写成的源程序,初学者较易理解,可用 TURBO BASIC或QBASIC等编译为EXE文件直接执行,也可稍加修改加上行标号后在GWBASIC上运行。
2

CLS

PRINT

PRINT"备份及恢复CMOS数据程序"

PRINT

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

(李东方)