一、CMOS内存信息详解
一般的PC/AT、286、386、486等微机均配有CMOS芯片,CMOS&127;芯片包含了一个实时钟和64个字节的CMOS内存。在CMOS内存中,0-0DH为实时钟的有关信息,0E-&127;3FH包含计算机的硬件配置信息,如常规内存的大小、扩展内存的大小、&127;软盘的类型、固定盘的类型及其物理参数、显示器的类型等,这些参数与计算机能否正常工作具有密切的关系,另外还有
计算机的开机口令和其它辅助设置信息。表1列出了&127;CMOS内存各字节的用途。
表1 CMOS内存配置信息的含义
地 址 功能 说明
0,1 秒,秒报警
2,3 分,分报警
4,5 时,时报警
6 星期几
7,8,9 日,月,年
A 状态寄存器A
B 状态寄存器B
C 状态寄存器C
D 状态寄存器D 0=电池失效,80=电池有效
E 诊断状态
F 关机状态 由上电诊断定义
10 软驱 高4位为A驱,低4位为B驱,0=无, 1=360KB, 2=1.2KB, 4=1.44KB, 6=720KB
11 保留
12 固定盘 高4位为C驱,低4位为D驱,0=无,F=用户定义盘, 其它为系统定义盘
13 保留
14 设备状态 标志驱动器数、显示器类型、有无数学处理器等
15-16 内存 以KB计的常规内存数,100H=256KB,200H=512KB, 280H=640KB
17-18 扩展内存 以KB计的扩展内存数,200H=512KB,400H=1024KB等
19 C盘类型数 根据具体硬盘类型而定
1A D盘类型数 根据具体硬盘类型而定
1B-1C 保留
1D-1E C盘柱体数 1D-2CH只有当硬盘为用户自定义类型时起作用
1F C盘面数
20-21 C盘WP
22-23 C盘LZ
24 C盘每柱扇区
25-26 D盘柱体数
27 D盘面数
28-29 D盘WP
2A-2B D盘LZ
2C D盘每柱扇区
2D 保留
2E-2F 校验和 为10-2DH共30个字节的和数,2EH为高位,2FH为低位
30-31 扩展内存
32 日期的世纪数 BCD码的世纪值,如1995年的世纪数为19
33 标志信息
34-3F 保留
*地址栏均为16进制表示
二、读写CMOS内存的方法
CMOS内存的地址口和数据口的口地址分别为70H和71H。在对CMOS内存进行写操作时,首先将要写入的CMOS内存的地址送到口地址70H,&127;再将要写入的数据送口地址71H。在对CMOS内存进行读操作时,首先将要读出的CMOS内存的地址送到口地址70H,再从口地址71H读出数据到AL寄存器。
三、
程序设计与使用
为了方便系统信息丢失后CMOS信息的恢复,作者用BORLAND PASCAL&127;设计了一个CMOS.PAS的程序,它可以将CMOS内存中的信息直接写入文件,也可以把文件中的信息写入CMOS内存,同时可以对CMOS内存中的信息进行编辑修改,并重新写回CMOS内存。它不仅解决了没有SETUP
程序的
计算机在加电时不能设置CMOS内存的问题,同时解决了CMOS信息的保存和恢复
问题,是广大
计算机用户的一个好帮手。
该程序的使用很简单,在DOS提示符下打CMOS,即显示该
程序的使用方法,&127;具体使用方法是:
CMOS [/开关]
开关有3个:
R --- 读取CMOS内存信息,并将其存入CMOS.DAT的文件,共占64个字节。
W --- 从CMOS.DAT中读取信息,并将其写入CMOS内存。&127;注意这样写入的CMOS信息,其时间和日期是不正确的,写完之后应当用DOS命令DATE和TIME&127;设置正确的日期和时间。
M --- 从CMOS中读取当前信息,进行修改,然后将其写入CMOS内存和CMOS.DAT的文件。
四、
程序清单
由于篇幅的限制,程序中略去了用TURBO &127;VISION&127;编写的
程序界面部分。
program C