其他分享
首页 > 其他分享> > 微机原理与接口技术 第六章 输入输出系统(持续更新)

微机原理与接口技术 第六章 输入输出系统(持续更新)

作者:互联网

一、输入输出接口的结构和功能

接口由硬件和软件组成
接口硬件:
在这里插入图片描述
接口软件:

  1. 初始化程序段:
    设备驱动程序、设定芯片工作方式等
  2. 数据交换程序段:
    管理、控制、驱动外设,负责外设和系统间信息交换。

为什么需要I/O接口(电路)?

  1. 微机的外部设备多种多样
  2. 工作原理、信息格式、工作速度等方面差别很大
  3. 外设不能与CPU直接相连
  4. 必须经过中间电路再与系统相连
  5. 这部分电路被称为lO接口电路

什么是I/O接口(电路)?

  1. I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路;
  2. 可编程接口芯片、I/O总线槽的电路板(适配器)都是接口电路。

1. 接口功能

  1. 速度匹配,数据缓冲
    (CPU 与外设速度以及种类的不一致,数据在输入的时候要有缓冲、输出的时候要有锁存器。)
  2. 数据格式转换
  3. 对I/O端口进行寻址,进行地址译码
  4. CPU与I/O外设信息联络
  5. 设置中断和DMA控制逻辑

2. 联络信息种类

  1. C P U 与 接 口 { D B A B C B : R D ‾ 、 W R ‾ 、 M / I O ‾ CPU与接口\begin{cases} DB\\ AB\\ CB:\overline{RD}、\overline{WR}、M/\overline{IO} \end{cases} CPU与接口⎩⎪⎨⎪⎧​DBABCB:RD、WR、M/IO​
  2. 接 口 与 外 设 { 数 据 信 号 状 态 信 号 控 制 信 号 接口与外设\begin{cases} 数据信号\\ 状态信号\\ 控制信号 \end{cases} 接口与外设⎩⎪⎨⎪⎧​数据信号状态信号控制信号​
    在这里插入图片描述

二、输入输出指令

1. I/O端口(port)的编址

① I/O端口泛指l/O地址,对应接口电路的寄存器;
② 一个接口电路可以具有多个I/O端口(寄存器)数据端口、状态端口和控制端口。
④ 8088/8086用于寻址外设端口的地址线为 16 16 16条
⑤ 端口最多有: 2 16 = 65536 = 64 K B 2^{16}=65536=64KB 216=65536=64KB个
⑥ 端口号: 0000 H ∼ F F F F H 0000H\sim FFFFH 0000H∼FFFFH
⑦ 两种编址:独立编址、统一编址

(1)I/O独立编址

  1. I/O接口具有独立指令,如8088/8086为 I N / O U T IN/OUT IN/OUT
  2. I/O接口空间与主存空间各自独立
    如 { 8086 I / O 空 间 : 64 K B ( 0000 H ∼ F F F F H ) 8086 主 存 空 间 : 1 M B ( 00000 H ∼ F F F F F H ) 如\begin{cases}8086I/O空间:64KB(0000H\sim FFFFH)\\ 8086主存空间:1MB(00000H\sim FFFFFH)\end{cases} 如{8086I/O空间:64KB(0000H∼FFFFH)8086主存空间:1MB(00000H∼FFFFFH)​
    在这里插入图片描述
    优 点 { 1.   I / O 端 口 的 地 址 空 间 独 立 2.   控 制 和 地 址 译 码 电 路 简 单 3.   专 门 的 I / O 指 令 优点\begin{cases}1.\ I/O端口的地址空间独立\\ 2.\ 控制和地址译码电路简单\\ 3.\ 专门的I/O指令\end{cases} 优点⎩⎪⎨⎪⎧​1. I/O端口的地址空间独立2. 控制和地址译码电路简单3. 专门的I/O指令​
    缺 点 { I / O 指 令 种 类 少 缺点\begin{cases}I/O指令种类少\end{cases} 缺点{I/O指令种类少​

(2)I/O与主存统一编址

  1. I/O接口与主存具有一套指令系统
  2. I/O接口与主存使用相同地址空间
    如 { 1 M B : 00000 H ∼ F F F F F H 如\begin{cases}1MB:00000H\sim FFFFFH\end{cases} 如{1MB:00000H∼FFFFFH​
    在这里插入图片描述
    优 点 : { 1.   不 需 要 专 门 的 I / O 指 令 2.   I / O 数 据 存 取 灵 活 优点:\begin{cases} 1.\ 不需要专门的I/O指令\\ 2.\ I/O数据存取灵活\end{cases} 优点:{1. 不需要专门的I/O指令2. I/O数据存取灵活​
    缺 点 : { 1.   I / O 端 口 要 占 去 部 分 存 储 器 地 址 空 间 2.   程 序 不 易 阅 读 ( 不 易 分 清 访 存 和 访 问 外 设 ) 缺点:\begin{cases} 1.\ I/O端口要占去部分存储器地址空间\\ 2.\ 程序不易阅读(不易分清访存和访问外设)\end{cases} 缺点:{1. I/O端口要占去部分存储器地址空间2. 程序不易阅读(不易分清访存和访问外设)​

2. I/O端口(port)寻址方式

(1)直接寻址

只寻址 00 H ∼ F F H 00H\sim FFH 00H∼FFH前256个端口
指令中操作数直接使用端口号

(2)间接寻址

可寻址全部(64K)端口: 0000 H ∼ F F F F H 0000H\sim FFFFH 0000H∼FFFFH
DX寄存器的值存放端口号
0100 H ∼ F F F F H 0100H\sim FFFFH 0100H∼FFFFH的端口只能采用间接寻址方式

在这里插入图片描述

3. 指令格式

  1. 输入指令: I N   A L / A X , p o r t IN\ AL/AX,port IN AL/AX,port
    (将外设数据传送给CPU内的AL/AX )
    I N   A L / A X , p o r t IN\ AL/AX,port IN AL/AX,port
    I N   A L , D X / i 8 ; 字 节 输 入 IN\ AL,DX/i8 \qquad\color{DeepSkyblue}{;字节输入} IN AL,DX/i8;字节输入
    I N   A X , D X / i 8 ; 字 输 入 IN\ AX,DX/i8 \qquad\color{DeepSkyblue}{;字输入} IN AX,DX/i8;字输入

在这里插入图片描述 I N   A L , 10 H ; A L = 12 H IN\ AL,10H \qquad\color{DeepSkyblue}{;AL=12H} IN AL,10H;AL=12H
I N   A X , 10 H ; A L = 3412 H IN\ AX,10H \qquad\color{DeepSkyblue}{;AL=3412H} IN AX,10H;AL=3412H

M O V   D X , 1000 H ; 直 接 寻 址 只 寻 址 00 H ∼ F F H 前 256 个 端 口 需 , 要 使 用 间 接 寻 址 , D X 寄 存 器 的 值 存 放 端 口 号 MOV\ DX,1000H \qquad\color{DeepSkyblue}{;直接寻址 只寻址00H\sim FFH前256个端口需,要使用间接寻址,DX寄存器的值存放端口号} MOV DX,1000H;直接寻址只寻址00H∼FFH前256个端口需,要使用间接寻址,DX寄存器的值存放端口号
I N   A L / A X , D X IN\ AL/AX,DX IN AL/AX,DX

  1. 输出指令: O U T   p o r t , A L / A X OUT\ port,AL/AX OUT port,AL/AX
    (将CPU内的AL/AX数据传送给外设)
    O U T   p o r t , A L / A X OUT\ port,AL/AX OUT port,AL/AX
    O U T   D X / i 8 , A L ; 字 节 输 出 OUT\ DX/i8,AL\qquad\color{DeepSkyblue}{;字节输出} OUT DX/i8,AL;字节输出
    O U T   D X / i 8 , A X ; 字 输 入 OUT\ DX/i8,AX\qquad\color{DeepSkyblue}{;字输入} OUT DX/i8,AX;字输入

例:从内存bvar单元取一个字节送到300H端口
b v a r   D B   12 H bvar\ DB\ 12H bvar DB 12H
.
.
.
M O V   A L , b v a r ; A L = 12 H MOV\ AL,bvar\qquad\color{DeepSkyblue}{;AL=12H} MOV AL,bvar;AL=12H
M O V   D X , 300 H MOV\ DX,300H MOV DX,300H
O U T   D X , A L OUT\ DX,AL OUT DX,AL
在这里插入图片描述
例:从内存wvar单元取一个字送300H端口
w v a r   D W   1234 H wvar\ DW\ 1234H wvar DW 1234H
.
.
.
M O V   A X , w v a r ; A X = 1234 H MOV\ AX,wvar\qquad\color{DeepSkyblue}{;AX=1234H} MOV AX,wvar;AX=1234H
M O V   D X , 300 H MOV\ DX,300H MOV DX,300H
OUT\ DX,AX
在这里插入图片描述

4. I/O地址译码

见第五章:地址译码器

  1. 门电路:接口电路只占少量I/O地址,可以利用线选法地址译码。

>在这里插入图片描述
A 9   A 8    A 7   A 6   A 5   A 4    A 3   A 2   A 1   A 0 \quad A_{9}\ A_{8}\ \ A_{7}\ A_{6}\ A_{5}\ A_{4}\ \ A_{3}\ A_{2}\ A_{1}\ A_{0} A9​ A8​  A7​ A6​ A5​ A4​  A3​ A2​ A1​ A0​
1 1   1 1 1 0   0 1 1 1 3 E 7 H \quad1\quad1\quad\ 1\quad1\quad1\quad0\quad\ 0\quad1\quad1\quad1\qquad3E7H 11 1110 01113E7H

  1. 译码器:选用2:4或3:8进行地址译码。

在这里插入图片描述
   C B    A \quad\ \ \quad\quad\quad\quad C\quad B\ \ A   CB  A
A 9   A 8    A 7   A 6   A 5   A 4    A 3   A 2   A 1   A 0 \quad A_{9}\ A_{8}\ \ A_{7}\ A_{6}\ A_{5}\ A_{4}\ \ A_{3}\ A_{2}\ A_{1}\ A_{0} A9​ A8​  A7​ A6​ A5​ A4​  A3​ A2​ A1​ A0​
1 1   0 0 0 0   0 0 0 0 300 H \quad1\quad1\quad\ 0\quad0\quad0\quad0\quad\ 0\quad0\quad0\quad0\qquad300H 11 0000 0000300H
1 1   0 0 0 0   1 1 1 1 30 F H \quad1\quad1\quad\ 0\quad0\quad0\quad0\quad\ 1\quad1\quad1\quad1\qquad30FH 11 0000 111130FH
Y 0 ‾ 接 口 芯 片 地 址 : 300 H ∼ 30 F H \overline{Y_0}接口芯片地址:300H\sim30FH Y0​​接口芯片地址:300H∼30FH
   C B    A \quad\ \ \quad\quad\quad\quad C\quad B\ \ A   CB  A
A 9   A 8    A 7   A 6   A 5   A 4    A 3   A 2   A 1   A 0 \quad A_{9}\ A_{8}\ \ A_{7}\ A_{6}\ A_{5}\ A_{4}\ \ A_{3}\ A_{2}\ A_{1}\ A_{0} A9​ A8​  A7​ A6​ A5​ A4​  A3​ A2​ A1​ A0​
1 1   0 0 0 1   0 0 0 0 310 H \quad1\quad1\quad\ 0\quad0\quad0\quad1\quad\ 0\quad0\quad0\quad0\qquad310H 11 0001 0000310H
1 1   0 0 0 1   1 1 1 1 31 F H \quad1\quad1\quad\ 0\quad0\quad0\quad1\quad\ 1\quad1\quad1\quad1\qquad31FH 11 0001 111131FH
Y 1 ‾ 接 口 芯 片 地 址 : 310 H ∼ 31 F H \overline{Y_1}接口芯片地址:310H\sim31FH Y1​​接口芯片地址:310H∼31FH
. \qquad. .
. \qquad. .
. \qquad. .

三、传送控制方式

  1. 程 序 传 送 控 制 方 式 : 程序传送控制方式: 程序传送控制方式:
    CPU执行程序中的I/O指令(IN/OUT)完成传送
    分为:无条件传送、查询传送、中断传送。
    在这里插入图片描述

  2. 直 接 存 储 器 ( 硬 件 ) 存 取 ( D M A ) : 直接存储器(硬件)存取(DMA) : 直接存储器(硬件)存取(DMA):
    DMAC利用系统总线在外设和主存间传送。

在这里插入图片描述

  1. I / O 处 理 机 ( 硬 件 ) 实 现 数 据 传 送 : I/O处理机(硬件)实现数据传送: I/O处理机(硬件)实现数据传送:
    CPU委托专门的I/O处理机(IOP8089)来完成数据传送。
    在这里插入图片描述

1. 无条件(同步)传送方式

原理:CPU与慢速外设交换数据。外设处于“就绪”状态,随时可以进行数据传送,亦称同步传送。(适合于简单设备,如LED数码管、按键等)
传送条件:外设必须随时就绪。

{ 1.   外 设 已 经 准 备 “ 就 绪 ” { 输 入 : 数 据 已 经 放 在 三 态 缓 冲 区 , 准 备 好 数 据 。 输 出 : 外 设 及 时 从 锁 存 器 中 取 走 数 据 , 锁 存 器 为 “ 空 ” 时 , C P U 传 下 一 个 数 据 2.   传 送 双 方 已 经 约 定 外 设 会 在 C P U 规 定 的 时 间 内 完 成 数 据 的 输 入 和 输 出 . \begin{cases}1.\ 外设已经准备“就绪”\begin{cases} 输入:数据已经放在三态缓冲区,准备好数据。\\ 输出:外设及时从锁存器中取走数据,锁存器为“空”时,CPU传下一个数据 \end{cases}\\ 2.\ 传送双方已经约定外设会在CPU规定的时间内完成数据的输入和输出. \end{cases} ⎩⎪⎨⎪⎧​1. 外设已经准备“就绪”{输入:数据已经放在三态缓冲区,准备好数据。输出:外设及时从锁存器中取走数据,锁存器为“空”时,CPU传下一个数据​2. 传送双方已经约定外设会在CPU规定的时间内完成数据的输入和输出.​

2. 条件传送控制方式(查询/异步)

(1) 特点

{ 1.   C P U 等 待 外 设 准 备 数 据 或 取 走 数 据 后 , 进 行 数 据 的 输 入 与 输 出 操 作 。 2.   解 决 C P U 与 外 设 不 同 步 传 送 数 据 的 问 题 。 3.   C P U 通 过 执 行 主 程 序 中 I N / O U T 实 现 数 据 的 输 入 与 输 出 。 4.   在 传 送 数 据 之 前 需 检 测 外 设 状 态 。 5.   工 作 可 靠 , 但 传 送 效 率 低 。 \begin{cases}1.\ CPU等待外设准备数据或取走数据后,进行数据的输入与输出操作。\\ 2.\ 解决CPU与外设不同步传送数据的问题。\\ 3.\ CPU通过执行主程序中IN/OUT实现数据的输入与输出。\\ 4.\ 在传送数据之前需\pmb{检测外设状态}。\\ 5.\ 工作可靠,但传送效率低。\end{cases} ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧​1. CPU等待外设准备数据或取走数据后,进行数据的输入与输出操作。2. 解决CPU与外设不同步传送数据的问题。3. CPU通过执行主程序中IN/OUT实现数据的输入与输出。4. 在传送数据之前需检测外设状态检测外设状态检测外设状态。5. 工作可靠,但传送效率低。​

(2) 过程

① 查 询 { 1.   C P U 读 外 设 状 态 I N   A L , p o r t 2.   C P U 检 测 状 态 是 否 就 绪 { T e s t   A L , . . . J Z / J N Z   L 1 3. 判 结 果 : 若 就 绪 进 行 数 据 传 送 , 否 则 循 环 读 状 态 字 ①查询\begin{cases}1.\ CPU读外设状态IN\ AL,port\\ 2.\ CPU检测状态是否就绪\begin{cases} Test\ AL,...\\ JZ/JNZ\ L1 \end{cases}\\ 3.判结果:若就绪进行数据传送,否则循环读状态字 \end{cases} ①查询⎩⎪⎪⎪⎨⎪⎪⎪⎧​1. CPU读外设状态IN AL,port2. CPU检测状态是否就绪{Test AL,...JZ/JNZ L1​3.判结果:若就绪进行数据传送,否则循环读状态字​
② 传 送 { 外 设 就 绪 后 , 寻 址 数 据 口 输 入 : I N 指 令 从 数 据 端 口 读 入 数 据 输 出 : O U T 指 令 向 数 据 端 口 输 出 数 据 ②传送\begin{cases} 外设就绪后,寻址数据口\\ 输入:IN指令从数据端口读入数据\\ 输出:OUT指令向数据端口输出数据\\ \end{cases} ②传送⎩⎪⎨⎪⎧​外设就绪后,寻址数据口输入:IN指令从数据端口读入数据输出:OUT指令向数据端口输出数据​

N Y IN读外设状态 状态就绪 IN/OUT进行数据传送

例:某查阅传送输入端口,状态口地址为2F0H,状态为位 D 7 D_7 D7​=1,表示外设准备好数据,数据口地址为2F1H,要从输入设备读入一个字节存入内存buf单元,编程
l e a   B X , b u f \qquad lea\ BX,buf lea BX,buf
M O V   D X , 2 F 0 H \qquad MOV\ DX,2F0H MOV DX,2F0H
L 1 : I N   A L , D X ; 读 状 态 L_1:IN\ AL,DX \qquad\color{DeepSkyblue}{;读状态} L1​:IN AL,DX;读状态
T e s t   A L , 80 H \qquad Test\ AL,80H Test AL,80H
J Z   L 1 \qquad JZ\ L_1 JZ L1​
M O V   D X , 2 F 1 H \qquad MOV\ DX,2F1H MOV DX,2F1H
I N   A L , D X \qquad IN\ AL,DX IN AL,DX
M O V   [ B X ] , A L \qquad MOV\ [BX],AL MOV [BX],AL
输出,从buf单元输出一个字节到显示器的端口地址上。
l e a   B X , b u f \qquad lea\ BX,buf lea BX,buf
M O V   A H , [ B X ] \qquad MOV\ AH,[BX] MOV AH,[BX]
M O V   D X , 2 F 0 H \qquad MOV\ DX,2F0H MOV DX,2F0H
L 1 : I N   A L , D X L1:IN\ AL,DX L1:IN AL,DX
T e s t   A L , 80 H \qquad Test\ AL,80H Test AL,80H
J Z   L 1 \qquad JZ\ L_1 JZ L1​
M O V   D X , 2 F 1 H \qquad MOV\ DX,2F1H MOV DX,2F1H
M O V   A L , A H \qquad MOV\ AL,AH MOV AL,AH
O U T   D X , A L \qquad OUT\ DX,AL OUT DX,AL

3. 中断传送控制方式

(1)定义:

当外设输入/输出数据准备好时,主动向CPU发中断请求,使CPU中止当前程序的运行,转出执行外设传送数据的服务程序,进行数据的输入/输出,传送完毕后,CPU会返回原程序的过程。
在这里插入图片描述

(2)特点:

①是一种效率较高的程序传送方式;
②中断服务程序是预先设计好的;
③CPU在每条指令周期后采样中断请求输入信号;
④外设需要传数据时,主动向CPU提出中断请求,提高实时性;
⑤外设准备数据和CPU执行程序并行工作,提高了CPU效率;
⑥每传输一次数据就要中断一次,需保护断点和现场;
⑦需要中断控制器8259芯片
⑧适合少量数据、中慢速外设的数据传送,如键盘、鼠标。

(3)传送过程
见第二章:中断过程
① 中断请求:外设请求CPU进行
② 中断判优
③ 中断响应:
响 应 条 件 : { 1.   C P U 必 须 执 行 完 当 前 的 指 令 2.   C P U 处 于 开 中 断 3.   不 能 有 更 高 级 ( 优 先 级 ) 的 中 断 请 求 响应条件:\begin{cases}1.\ CPU必须执行完当前的指令\\ 2.\ CPU处于开中断\\ 3.\ 不能有更高级(优先级)的中断请求\end{cases} 响应条件:⎩⎪⎨⎪⎧​1. CPU必须执行完当前的指令2. CPU处于开中断3. 不能有更高级(优先级)的中断请求​
③ 中断处理:使用中断服务子程序中IN/OUT指令,进行数据的输入/输出。
④ 中断返回:完成一次中断传送返回原程序。

4. DMA传送控制方式

(1)定义:不需要CPU介入由专门硬件DMAC(8237芯片)直接控制数据传送,可以成块传送一批数据,适用于高速外设与主存的直接传送。

(2)过程:三个阶段

{ 传 送 前 预 处 理 传 送 传 送 后 处 理 \begin{cases} 传送前预处理\\ 传送\\ 传送后处理 \end{cases} ⎩⎪⎨⎪⎧​传送前预处理传送传送后处理​
在这里插入图片描述
DMA传送过程:
①外设向DMAC发出请求。
②DMAC向CPU申请总线(hold ) 。
③CPU完成当前总线周期后响应(hlda) ,并释放
总线控制权。
④DMAC得到总线控制权,发出DMA响应信号。
⑤由DMAC发出读写控制信号,控制外设与存储器
之间的数据传送。
⑥数据传送完后,DMAC撤销HOLD信号。
⑦CPU释放HLDA信号,并重新控制总线。

(3)特点:

① 传送过程中不需要CPU,CPU效率提高
② 8237传送数据时,CPU执行自己的工作,两者完全并行
③ 8237没有总线,传送前/后需向CPU请求/归还总线
④ 高速外设、硬盘与内存之间用的就是这种传输方式。

例:CPU与慢速的外设进行数据传送时,采用___ C _____方式可提高CPU效率
A. 无条件传送
B. 查询
C. 中断
D. DMA
一个外设接口中必须要有数据端口、地址端口 ( 改 为 状 态 端 口 ) \color{DeepSkyblue}{(改为状态端口)} (改为状态端口)、控制接口(×)

标签:传送,接口技术,输入输出,AL,微机,DX,cases,CPU,外设
来源: https://blog.csdn.net/qq_35706314/article/details/122144418