-
在PC机系统中,和CPU 通过总线相连的芯片除各种存储器外,还有以下3种芯片:
(1) 各种接口卡(如,网卡、显卡)上的接口芯片,它们控制接口卡进行工作;
(2) 主板上的接口芯片,CPU通过它们对部分外设进行访问;
(3) 其他芯片,用来存储相关的系统信息,或进行相关的输入输出处理; -
在这些芯片中,都有一组可以由CPU读写的寄存器。 这些寄存器有2个相同点:
(1) 都和CPU的总线相连,当然这种连接是通过它们所在的芯片进行的;
(2) CPU对它们进行读或写的时候都通过控制线向它们所在的芯片发出端口读写命令; -
CPU可以直接读写以下3个地方的数据:
(1) CPU内部的寄存器;
(2) 内存单元;
(3) 端口;
14.1 端口的读写
-
在访问端口的时候,CPU通过端口地址来定位端口。端口地址通过地址总线来传送。
-
在PC系统中,CPU最多可以定位64KB个不同的端口,则端口地址范围0~65535.
-
端口读写指令只有2条:
in:从端口读取数据
out:往端口写入数据 -
访问端口:
in al,60h ;从60h号端口读入1个字节
执行时与总线相关的操作如下:
① CPU 通过地址线将地址信息60h发出;
② CPU 通过控制线发出端口读命令,选中端口所在的芯片,并通知它,将要从中读取数据;
③ 端口所在的芯片将60h端口中的数据通过数据线送入CPU;
注意:在in 和 out 指令中,只能使用ax 或 al 来存放从端口中读入的数据或要发送到端口中的数据。访问8位端口时用al,访问16位端口时用ax。
-
对0~255以内的端口进行读写时:
in al,20h
out 20h,al -
对256~65535的端口进行读写时,端口放在dx中:
mov dx,3f8h
in al,dx
out dx,al
14.2 CMOS RAM 芯片
PC机中,有一个CMOS RAM 芯片,一般简称CMOS.芯片特征如下:
(1) 包含1个实时钟和1个128个存储单元的RAM存储器;
(2) 该芯片靠电池供电。所以,关机后其内部的实时钟仍可正常工作,RAM 中的信息不丢失。
(3) 128个字节的RAM中,内部实时钟占用0~0dh单元来保存时间信息,其余大部分单元用于保存系统配置信息,供系统启动时BIOS 程序读取。BIOS 也提供了相关的程序,使我们可以在开机的时候配置CMOS RAM中的系统信息。
(4) 该芯片内部有2个端口,端口地址为70h和71h。CPU通过这2个端口来读写CMOS RAM.
(5) 70h 为地址端口,存放要访问的CMOS RAM 单元的地址;71h 为数据端口,存放从选定的CMOS RAM 单元中读取的数据,或要写入到其中的数据。
CPU 对CMOS RAM 的读写分2步进行,比如,读CMOS RAM 的2号单元:
① 将2 送入端口70h;
② 从端口71h 读出2号单元的内容;
14.3 shl 和shr 指令
-
shl:逻辑左移指令,功能:
(1) 将一个寄存器或内存单元中的数据向左移位;
(2) 将最后移出的1位写入CF中;
(3) 最低位用0补充;
如果移动位数>1时,必须将移动位数放在cl中。
-
shr:逻辑右移指令
(1) 将一个寄存器或内存单元中的数据向右移位;
(2) 将最后移出的1位写入CF中;
(3) 最高位用0补充;
14.4 CMOS RAM 中存储的时间信息
在CMOS RAM中,存放着当前的时间:年、月、日、时、分、秒。这6个信息的长度都为1个字节,存放单元为:
秒:0 分:2 时:4 日:7 月:8 年:9
这些数据已BCD码的方式存放。
实验14:
To be continue…