1、端口:是一个二传手。CPU控制外设,不能直接操纵,须通过一个接口(二传手)来控制。这个接口就由多个端口组成。
比如网卡,不能直接操作,须通过网卡上的接口电路来操作,这个接口电路也分一些寄存器等,我们只须看它为端口。
因此,端口象视存储一样,被映射到地址空间中,这样CPU才可能操作端口,端口再操作外设的动作。这样有一个好处
就是CPU不需要了解每个厂商的设计,只对端口进行操作,厂商会根据自己的设计把相关命令转化为相应的动作。
CPU<----->接口电路(端口)<------->外设
2、端口同内存地址一样,通过地址总线来传送。按时段的偏移量,它最多就是64K个不同的端口(FFFFH),即65535个
3、端口的读写。读:就是由端口到CPU,用in
写:就是由CPU到端口,用out
操作数的方向都是从右边(源)到左边(目的)。
in al,60H, ;从60H端口到CPU的al,读操作。过程:通过地址总线发出60H,控制线发出端口读命令,这样,60H端口就将数据传到CPU(al)中。
out 20h,al ;把al中内容写到20H端口中。
注意:int和out只能使用ax或al来存放 从端口中诗篇的数据或要发送到端口中的数据。访问8位用al,访问16位用ax
另外,端口有限制:对255内的可以直接用立即数表示,但对于265到65535的得用dx来进行表示 。
in al,20
out 20h,al
----------------------
mov dx,3f8h ;必须用dx来替换
in al,dx
out dx,al
4、cmos RAM含实时钟及128存储字节,0-0DH保存时间信息。
其余大部分保存配置信息,供系统启动时Bios来读取。
5、CMOS内部有两端口,70H、71H。这就为CPU操作CMOS提供的接口。
70H端口存放CMOS中RAM的地址单元,即,地址
71H端口存放对应地址单元的数据 即,数据
例:读2号单元:
mov al,2
out 70H,al
in al,71H
6、逻辑移位,shl(shift logic left) shr(shift logic right)
shl 左移,最后移出的一位进入CF,低位用0补充
SHR 右移,最后移出的一位进入CF,高位用0补充。
注意:1,最后移出的一位都要进入监狱CF,
2、次数超过1都要用CL来代替执行,(如同端口大于 255,用DX一样)
mov cl,3
shl al,cl
7、CMOS中存储时间的地址表。都用“一个字节”来表示对应的年月日时分秒
0:秒 2:分 4:时 7:日 8:月 9:年
存储形式按BCD码,即四位表示一个数,这个四位的十进制就是。如0001 0010 一个字节表示两个数据,即12