7 输入/输出系统
输入/输出系统 是微型计算机系统中的主机与外部设备进行交互的系统。主机通过输入/输出接口与外部设备连接,在接口电路和驱动程序控制下进行信息交换。
#
接口⭐接口:是CPU与外部设备交换信息的中转站
接口电路的功能
- 应具有数据暂存/缓冲功能
- 与外设之间有联络功能,提供外设状态
- 应有端口地址编码器,具有寻址功能(便于
IN
,OUT
指令读写数据) - 有数据转换功能(并➡️串,串➡️并)
- 有中断管理能力
#
端口⭐端口:是接口电路中,能与CPU交换信息(使用IN
,OUT
)的寄存器
端口分类:(接口电路必须具有数据口)联系总线
- 数据口:存放CPU向外设输出或外设输入的数据
- 控制口:存放控制信息--控制接口电路、外设的工作
- 状态口:存放状态信息——反映外设的状态。
#
端口编址方式每个端口,系统都为它编一个地址,系统只要给出某个地址,通过译码电路,就能找到相应地I/O接口电路中的端口寄存器
❓系统给出的地址是内存单元地址还是I/O端口寄存器的地址?
解决方案:合理安排I/O端口寄存器的编址方式:
存储器映像方式
把端口寄存器和存储单元等同看待,统一编址。
特点:凡访问存储单元的指令都可以访问I/O端口,端口地址占用存储空间
I/O端口独立编址
特点:I/O端口不占用存储空间,CPU要有专用的I/O指令
PC系列机采用端口独立编址
- 从8086到奔腾微处理器,设计时用A15~A0低16位地址寻址I/O端口,所以端口寻址能力为个
- 基于微处理器的PC系列,实际使用CPU中做I/O地址线,所以,PC系列机I/O端口地址最多为个。这1024个口地址,系统本身(主板上, 以及常规 I/O接口)已经占用了一部分。
- 端口地址( I/O 空间)没有分段的概念。
#
最常用的I/O指令#
直接寻址I/O指令设N为8位端口地址
IN AL,N ;口地址为N的端口中取数给ALOUT N, AL ;AL内容给口地址为N的端口寄存器IN AX,N ;[N]->AL,[N+1]->AHOUT N, AX ;AL->[N],AH->[N+1]
#
DX间址的I/O指令当口地址N>8位二进制数时,用DX间址,但是书写时不能加方括号
IN AL, DX ; [DX]的端口内容 → ALOUT DX, AL ; AL →[DX]的端口寄存器IN AX, DX ; [DX] → AL, [DX+1] → AHOUT DX, AX ; AL → [DX], AH → [DX+1]
注意:I/O指令只能在端口和AL,AX,EAX之间交换信息,用DX间址,但不能使用方括号,即不能写成IN AL,[DX]
#
微型系统与外设交换信息的方式微机系统与I/O端口的信息交换有四种方式:
- 无条件传送
- 查询方式
- 中断方式
- DMA方式:DMA方式是说直接存储器存取方式(Direct Memory Access)。为实现DMA方式而设计的专用控制芯片,称为DMA控制器(DMAC)DMAC的HLDA为总线响应信号,HOLD为总线信号引脚
采用何种方式与接口的硬件电路有直接关系。
#
无条件传送无条件传送方式进行数据读取,完成将201H端口中的8位数据读取到AL寄存器中
MOV DX, 201HIN AL, DX
无条件传送方式进行数据写入,完成将AL寄存器中的8位数据写入201H端口中
MOV DX, 201HMOV AL, 7FHOUT DX, AL
#
查询方式检测200H端口状态完成将AL寄存器中8位数据输出/写入到将201H端口中
查询方式输入
RSCAN: MOV DX, 200H IN AL, DX TEST AL, 80H ;反复查询外设端口状态 JZ RSCAN ;外设没有准备好,则返回重新查询,直到外设准备好 MOV DX, 201H IN AL, DX ;端口输出输入到寄存器
查询方式输出
TSCAN: MOV DX, 200H IN AL, DX TEST AL, 1 ;反复查询外设端口状态 JNZ TSCAN ;外设没有准备好,则返回重新查询,直到外设准备好 MOV DX, 200H MOV AL, 1FH OUT DX, AL ;寄存器数据输出到端口