12.1端口的读写
CPU可以直接读写以下3个地方的数据:
(1)CPU内部的寄存器
(2)内存单口
(3)端口
对端口的读写不能用mov、push、pop等内存读写指令。端口的读写指令只有两条:in 和 out ,分别用于从端口读取数据和往端口写入数据。
访问端口:
in 寄存器,端口号(存放端口号的寄存器) //从该端口号读取一字节数据到寄存器
out 端口号(存放端口号的寄存器),寄存器 //将寄存器的数据写入指定端口
eg:
int al,60h ; //从60h号端口读入一个字节
在in和out指令中,只能使用ax或al来存放从端口中读入的数据或者要发送到端口中的数据。访问8位端口时用al,访问16位端口时用ax。
不能用立即数和端口号表示
out 71h,2 这样写是错的,汇编指令操作数一定要包含寄存器
in al,20h //从20h端口读入一个字节
out 20h,al //从20h端口写入一个字节
12.2CMOS RAM芯片
特点:
(1)包含一个实时钟和一个128个存储单元的RAM存储器
(2)该芯片靠电池供电。所以关机后其内部的实时钟仍可继续工作,RAM中的信息不丢失。
(3)内部实时钟占用0-0dh单元来保存时间信息。
(4)该芯片内部有两个端口,端口地址为70h和71h。CPU通过这两个端口来读写CMOS RAM。
(5)70h为地址端口,存放要访问的CMOS RAM单元的地址;71h为数据端口,存放从选定的CMOS RAM单元中读取的数据,或要写入到其中的数据。
eg:读取CMOS RAM的2号单元的内容
mov al,2
out