一 CMOS介绍
CMOS(Complementary Metal-Oxide Semiconductor)是一种常见的半导体芯片技术,广泛用于各种微处理器和外设中。
在PC系统中,CMOS芯片主要用于实现实时时钟(RTC)和存储BIOS设置。CMOS内含有一小块SRAM芯片和电池,可以在系统断电时保持数据。
二 CMOS数据的读取
要读取CMOS中的数据,需要访问RTC及配置存储区指定的I/O端口。在IBM PC兼容机上,主要有以下几个I/O端口:
0x70 - RTC地址寄存器端口,写入要访问的RTC或CMOS内存地址
0x71 - RTC数据寄存器端口,读取或写入RTC的控制数据或CMOS内存单元的数据
0x72 - RTC控制寄存器端口,控制RTC及中断
0x73 - RTC状态寄存器端口,读取RTC及CMOS的状态
例如,要读取CMOS内存地址0x10处的数据:
向0x70端口写地址0x10
从0x71端口读数据,得到address 0x10处的内容
CMOS内存组织为128字节,低地址部分为RTC及状态寄存器,高地址部分存储BIOS配置信息。
通过直接访问这些I/O端口,我们可以在程序中读取CMOS配置数据,获取硬件信息。但需要注意CMOS访问是比较敏感的,如果不正确可能会导致系统问题。
DOS环境下的示例代码: