下面的内容中,我们通过对CMOS RAM的读写来体会一下对端口的访问。
PC机中,有一个CMOS RAM芯片,一般简称为CMOS。此芯片的特征如下。
(1)包含一个实时钟和一个有128个存储单元的RAM存储器(早期的计算机为64个字节)。
(2)该芯片靠电池供电。所以,关机后其内部的实时钟仍可正常工作,RAM中的信息不丢失。
(3) 128个字节的RAM中,内部实时钟占用。一。dh单元来保存时间信息,其余大部分单元用于保存系统配置信息,供系统启动时BIOS程序读取。BIOS也提供了相关的程序,使我们可以在开机的时候配置CMOS RAM中的系统信息。
(4)该芯片内部有两个端口,端口地址为70h和71ho CPU通过这两个端口来读写CMOS RAM
(5) 70h为地址端口,存放要访问的CMOS RAM单元的地址;71h为数据端口,存放从选定的CMOS RAM单元中读取的数据,或要写入到其中的数据。可见,CPU对CMOS RAM的读写分两步进行,比如,读CMOS RAM的2号单元:
①将2送入端口70h;
②从端口71h读出2号单元的内容。
检测
(1)编程,读取CMOS RAM的2号单元的内容。
(2)编程,向CMOS RAM的2号单元写入Oo
范例
任务:读取CMOS中信息,在屏幕中间显示当前的月份
assume cs:code code segment start:mov al,8 out 70h,al in al,71h mov ah,al mov cl,4 shr ah,cl and al,00001111b add ah,30h add al,30h mov bx,0b800h mov es,bx mov byte ptr es:[160*12+40*2],ah mov byte ptr es:[160*12+40*2+2],al mov ax,4c00h int 21h code ends end start