1.在PC机系统中,和CPU通过总线相连的芯片除各种存储器外,还有以下三种芯片:
(1)各种接口卡上的接口芯片,它们控制接口卡进行工作
(2)主板上的接口芯片,CPU通过它们对部分外设进行访问
(3)其他芯片,用来存储相关的系统信息,或进行相关的输入输出处理
在这些芯片中,都有一组可以由CPU读写的寄存器,这些寄存器它们物理上可处于不同芯片中,但它们一下两点是相同的:
(1)都是CPU的总线相连,这种连接时通过它们所在的芯片 进行的
(2)CPU对它们进行读或写的时候都是通过控制线向它们所在的芯片发出端口读写命令
CPU可直接读写以下三个地方的数据:
(1)CPU内部的寄存器
(2)内存单元
(3)端口
2.端口的读写指令就只有两条,in和out
注:在in和out指令中,只能使用ax或al来存放从端口中读写的数据,访问8位端口用al,访问16位端口用ax
如:
对0~255以内端口读写
in al,20H ;从20H端口读入一个字节
out 20H,al ;往20H端口写入一个字节
对256~65535端口读写时,端口号放在dx,
mov dx,3f8H ;将端口号3f8h送入dx
in al,dx ;从3f8h端口读入一个字节
out dx,al ;从3f8h端口写入一个字节
3.CMOS RAM芯片:128个字节的RAM中,内部实时钟占用0~0dH单元来保存时间信息,其他单元都是用于保存系统配置信息,供系统启动时BIOS程序读取
该芯片内部有两个端口,端口地址为70H,71H,
70H为地址端口,存放要访问的CMOS RAM单元的地址
71H为数据端口,存放从选定的CMOS RAM单元中读取的数据或要写入到其中的数据
COMS RAM存放当前时间:年月日时分秒,这六个信息的长度都为1字节
CMOS RAM存储时间信息的单元中,存储了用两个BCD码表示的两个十进制数,高4位BCD码表示十位,低4位BCD码表示个位
BCD码:以4位二进制来表示十进制数码的编码方法
如:
将从CMOS RAM的8号单元中读出的一个字节,分为两个表示BCD码值的数据
mov ah,al ;al中为从CMOS RAM的8号单元中读出的数据
mov cl,4
shr ah,cl ;ah中为月份的十位数码值
and al,00001111B ;al中为月份的个位数码值
shl 逻辑左移指令,功能:
(1)将一个寄存器或内存单元中的数据向左移位
(2)将最后移出的一位写入CF中
(3)最低位用0补充
如:
mov al,01001000B
mov cl,2
shl al,cl
执行后,(al)=00100000B,CF=1
shr 逻辑右移指令,功能:
(1)将一个寄存器或内存单元中的数据向右移位
(2)将最后移出的一位写入CF中
(3)最高位用0补充
如:
mov al,01010001B
mov cl,3
shr al,cl
执行后(al)=00001010B,因为最后移出的一位是0,则CF=0