计算机外部寄存器(端口)概念

一般来说各种存储器都和CPU的地址线、数据线、控制线相连,CPU在操控它们的时候都要把它们当作内存来对待,把它们总地会去看做是一个由若干存储单元组成的逻辑存储器,这个逻辑存储器,我们把它称为内存地址空间

这里写图片描述

在PC机系统当中,和CPU通过总线相连的芯片除了各种的存储器之外,其实还有些其他的芯片,比如说下面三种

  • 1、各种接口卡(比如,网卡、显卡)上的接口芯片,它们控制接口卡进行工作
  • 2、主板上面的接口芯片,CPU通过它们对部分外设进行访问
  • 3、其他芯片就是用来存储相关的系统信息,或者进行相关的输入输出的处理

其实在这些芯片当中,都是有一组可用由CPU进行读写的寄存器的,这些寄存器,它们在物理上可能处于不同的芯片当中,它们通过芯片和CPU的总线相连接,CPU对它们进行读或写的时候都通过控制线向它们所在的芯片发出端口读写命令

从CPU的角度,可用将这些寄存器当作是端口,会对它们进行统一编址,从而建立了一个统一的端口地址空间,每一个端口在地址空间都有一个地址

我们在访问端口的时候其实是CPU通过端口地址来定位端口的,因为端口所在的芯片和CPU通过总线相连,所以端口地址和内存地址一样,通过地址总线来传送

对于端口的读写操作我们不能使用mov、push、pop等内存读写的指令,端口的读写指令只有两条分别是in和out,分别是用于从端口读取数据和往端口写入数据

从端口读入一个字节的数据,比如说从20h端口读入一个字节的数据

in al,20h

执行这条指令和总线相关的操作如下所示

  • 1、CPU通过地址线将地址信息20h发出
  • 2、CPU通过控制线发出端口读命令,选中端口所在的芯片,并且去通知它,将要从中读取数据
  • 3、端口所在的芯片将20h端口中的数据通过数据线传入CPU

从端口写入一个字节的数据,比如说从20h端口写入一个字节的数据

out 20h,al

需要注意的是在in和out指令当中,只能使用ax或者是al来存放从端口中读入的数据或者要发送到端口中的数据,访问8位的端口的时候需要使用的就是al,访问16位端口的时候就是用的是ax

猜你喜欢

转载自blog.csdn.net/zcmuczx/article/details/80383270