[汇编学习笔记][第十四章 端口]
第十四章 端口
和CPU相连的芯片,除了各种储存器外,还有一下三种芯片。
- 各种接口卡(网卡,显卡)上的接口芯片,他们控制接口卡进行工作。
- 主板上的接口芯片,CPU通过它们对部分外设进行访问。
- 其他芯片,用来存储相关的系统信息,或进行相关的输入输出处理。
CPU可以直接读写一下三个地方数据
- CPU内部的寄存器
- 内存单元
- 端口
14.1 端口的读写
- CPU最多可以定位64KB个不同的端口。
-
对端口的读写只能用
in
和out
两条命令 -
访问端口
in al,60h //从60h号端口读入一个字节
-
在
in
和out
指令中只能用al或ax读或写入端口。 -
对256~65535端口进行读写时,端口号要放在
dx
中mov dx,3f8h in al,dx out dx,al
14.2 CMOS RAM 芯片
PC机中,有一个CMOS RAM
芯片,一般简称为CMOS,该芯片有如下特征。
- 包含一个实时钟和一个有128个存储单元的RAM存储器
- 该芯片靠电池 供电,所以关机后其内部的实时钟仍可工作,RAM信息不丢失。
- 128个字节RAM中,内部实时钟占用0~0dh单元保存时间信息, 其余大部分单元用于保存系统配置信息,供系统启动时BIOS程序读取,BIOS也提供了相关的程序,使我们在开机的时候配置CMOS RAM的系统信息。
- 该芯片由两个端口,端口地址为
70h
,和71h
。CPU通过这两个端口来读写CMOS RAM -
70h
为地址端口,存放要访问的CMOS RAM单元的地址;71h
为数据端口,存放从特定的CMOS RAM单元中读取的数据,或要写入其中的数据。可见,CPU对CMOS RAM的读写分两步进行,比如,读CMOS RAM的2号单元- 将2送入端口地址70h - 从端口71h读出2号单元的内容
14.3 shl和shr指令
- shl al,1
- 如果移动位数大于1,必须将移动位数放在
cl
中
14.4 CMOS ROM中存储的时间信息
在CMOS ROM中,存放着当前的时间,这6个信息长度都为一个字节。
存放单元为
- 秒:0
- 分:2
- 时:4
- 日:7
- 月:8
- 年:9
且这些数据都以BCD码存储
问:如何在屏幕显示月份信息
-
从CMOS RAM的8号单元读出当前月份的BCD码
mov al,8 out 70h,al in al 71h
-
BCD码表示的月份以十进制的形式显示到屏幕上
- BCD码值+30h=十进制对应的ASCLL码低