本文转自:http://www.biosren.com/redirect.php?tid=44&goto=lastpost
一、CMOS的概念:
CMOS是互补金属氧化物半导体的缩写。其本意是指制造大规模集成电路芯片用的一种技术或用这种技术制造出来的芯片。在这里通常是指微机主板上的一块可读写的RAM芯片。它存储了微机系统的实时时钟信息等,共计128个字节。系统在加电引导机器时,会读取CMOS信息,用来初始化机器各个部件的状态。它靠系统电源和后备电池来供电,系统掉电后其信息不会丢失。CMOS RAM是系统参数存放的地方,而BIOS中系统设置程序是完成参数设置的手段。
二、CMOS的数据格式:
CMOS的00H~09H单元里存放的是RTC时间,这是标准的,不会随BIOS供应商的改变而有所改变。
0AH~0DH单元里存放的状态寄存器,0EH里存放的是诊断寄存器,0FH单元便是重要的shut down byte。10H~2DH单元中内容涉及到软盘、硬盘、内存、显示卡等最基本的硬件配置。2E~2FH 是10-2DH的校验和。
15~16H 基本内存容量,单位K;17~18H 扩充内存容量,单位K;30~31H 扩充内存容量,单位K。
三、CMOS读写的方法:
在计算机系统中,对CMOS中数据的读写是通过两个I/O端口来实现的,其中,端口70H是一个字节的只写端口,用它来设置CMOS中的数据地址;而端口71H是用来读写端口70H设置的CMOS地址中的数据单元字节内容。所以在读写CMOS数据时,可以通过70H端口写入一个地址值,再通过71H端口读出一个数据。端口70H的bit 7是用来使能和关闭NMI的(0=Disable NMI Generation)。
端口74H和75H是用来访问扩展的256字节CMOS地址空间。
四、清除CMOS密码:
有两个方法,一是硬件跳线,另一个就是软件方法。因为2EH、2FH单元中存放的是10H~2DH单元中各字节的校验和(CMOS CHECKSUM)。BIOS每次引导时要读取CMOS信息,同时还要检查10H~2DH单元中的各字节的校验和是否与2EH、2FH单元中的数据相同,不同则提示CMOS中数据有错,同时载入CMOS的默认值,达到清除密码的目的。
debug
-O 70 2e
-O 71 00
-O 70 2f
-O 71 00
Award用CMOS中1CH和1DH单元中存放密码。
五、附件:CMOS简单格式表
Offset | Description |
0x00 | Current second (Real Time Clock) 1 |
0x01 | Alarm second1 |
0x02 | Current minute (Real Time Clock) 1 |
0x03 | Alarm minute1 |
0x04 | Current hour (Real Time Clock) 1 |
0x05 | Alarm hour1 |
0x06 | Current day of week (Real Time Clock) 1 |
0x07 | Current date of month (Real Time Clock) 1 |
0x08 | Current month (Real Time Clock) 1 |
0x09 | Current year (Real Time Clock) 1 |
0x0a | RTC Status Register A |
0x0b | RTC Status Register B |
0x0c | RTC Status Register C |
0x0d | RTC Status Register D |
0x0e | POST diagnostics status byte |
0x0f | Shutdown status byte |
0x10 | Diskette drive types |
0x11 | Reserved |
0x12 | Hard Disk drive types |
0x13 | Reserved |
0x14 | Equipment byte |
0x15 | Base memory (low byte) |
0x16 | Base memory (high byte) |
0x17 | Extended memory (low byte) |
0x18 | Extended memory (high byte) |
0x19-0x2d | Reserved |
0x2e | Check sum (low byte) |
0x2f | Check sum (high byte) |
0x30 | Extended memory above 1 Mb (low byte) |
0x31 | Extended memory above 1 Mb (high byte) |
0x32 | Current century1 |
0x33 | Information Flags |
0x34-0x3f | Reserved |