在PC机系统中,和CPU经过总线链接的芯片除了各类存储器外,还有如下3种芯片:接口
1,各类接口卡(网卡,显卡)上的接口芯片内存
2,主板上的接口芯片,CPU经过访问他们对部分外设进行访问请求
3,其余芯片,用来储存相关的系统信息程序
这些芯片中,都是一组能够由CPU读写的寄存器。这些芯片上的寄存器就是端口。总结
从CPU角度来看,将这些寄存器(三组芯片中的)都当作端口,对它们进行统一编址,从而创建了一个统一的端口地址空间,每一个端口在空间中都有一个地址。cpu
在PC中,端口地址范围为0~65535,能够最多定义64K个不一样的端口。数据
CPU能够直接读写三个地方上的数据:端口
CPU内部的寄存器、内存单元、端口键盘
因为端口是一个独立的存在,他们有他们的端口地址空间,因此对端口的访问,咱们不能仍是经过mov这样的指令了,咱们经过 in , out 指令。好比:字符
in al, 60h; 就是咱们从60h这个端口读取一个字节到al寄存器中去。
注意:只能使用al,或者ax从储存从端口获取的内容。
shl , shr 指令:
移位,进位的那位储存在CF中,补位为0
如今考虑一个问题,好比咱们经过键盘输入一个字符进入PC,那么CPU是如何知道咱们输入了的呢?
这里就是中断起做用了,CPU在每执行完一个指令后,会检查IF标志位,若是是1,则代表了有一个外部中断来了,而后cpu开始处理外部中断了,这和前面讲的处理内部中断同样,这也为何前面讲的要将IF清0了。
咱们总结下,当一个外设接收到一个数据了,它将这个数据存放在一个寄存器里,也就是端口中,而后外设发送中断请求,CPU判断中断源,并进行相应的中断处理。最后咱们再中断处理程序中,去端口获取这个数据,而后处理,最后返回。