输入输出方式及其中断处理(精)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2018/10/5
N
取得下一条指令
p.263 是当前指令最图6-13
后一个T ?
Y N
INTR=1?
Y N
IF=1?
Flags入栈 清除IF、TF CS、IP入栈
取得中断向量并转向执 行用户中断处理程序
Y
CS、IP出栈 Flags出栈
17
(3)中断响应
• NMI中断——CPU无法屏蔽,自动转向中断类型2处 理过程。 • INTR中断——CPU将产生两个中断响应的总线周期 (p.123),自动保护断点(Flags入栈;IF和TF清 零;CS、IP入栈),进行向量中断处理。 • 向量中断——在中断响应的总线周期中,中断源 的相应接口把中断类型码n放到CPU的DB上,n×4 即为中断向量在中断向量表中的存储地址。CPU转 向从中断向量表取得的中断向量(即,中断服务程 序首地址),并进入相应的中断服务子程序执行过 程。
2018/10/5 8
1、I/O接口电路的基本结构
从编程角度看,接口内部主要包括一个或多个
CPU可以进行读/写操作的寄存器,又称为I/O端口。
各I/O端口由端口地址区分。
AB
C P U
DB
地址 译码 数据 缓冲 控制 电路
I/O端口1
外
I/O端口2
CB
I/O端口3
设
2018/10/5
9
2、I/O接口电路编址方式
中断请求 INTR
中断源
中断服务程序1
IRET
断点 使用堆栈 保护断点
2018/10/5
中断请求 INTR
中断服务程序2
IRET
6
3. DMA方式(直接存储器存取方式)
• 当外设的速度相对很高,且一次传送的数据量 很大时,中断方式的效率就很低。例如,对磁 盘的读写操作,一般的文件都有几十K,几百K, 甚至几兆,通过 DMA 方式利用专门的接口控制 电路,在存储器与高速的外设之间进行大量的 数据交换,而不需要CPU的参与。 • DMA控制器-DMAC,除了具有一般接口的特点 外,CPU可以通过对DMAC相应端口的读/写操作 来控制DMA的工作方式;DMAC在得到总线控制 权后,能够像CPU一样提供相应的控制信号来 控制系统总线,从而实现外设与内存之间高速 大量的数据传输。一般接口电路不具备控制总 线的能力。
2018/10/5 12
• 8086中断
1) 外 部 中 断 : 由 外 部 硬 件 引 起 的 中 断 。 8086 的中断系统,外部中断请求由非屏蔽 中断NMI和可屏蔽中断INTR两个引脚引入。 2) 内部中断: ①内部硬件中断:硬件出错,除数为 0 ,溢 出错误,单步中断,断点中断。 ②内部软件中断:以指令 INT n 调用的中断, n为中断类型码。实际上调用的是系统软件 (主要是操作系统)中的子程序。
2018/10/5 10
3、I/O接口地址译码方法
• 直接地址译码——用译码器及部分逻辑器件组成
图6-11
A5
A6 A7 A8 74LS138
A
B C G2B G2A G1
A9
AEN IOW
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 × × × ××
——中断向量及其在中断向量表中的存储地址 5. 中断控制器8259A组成原理与编程应用
2018/10/5 2
6.1 I/O方式概论
• (p.168) I/O指令: – 输入指令: IN AL,PORT IN AL,DX – 输出指令: OUT PORT,AL OUT DX,AL • PORT: 端口地址
2018/10/5 7
6.2 I/O接口基本结构及编址方式
• 关于I/O“接口”与“端口” I/O接口与CPU之间传送的信息有数据、状态和控制信号 等3大类。每个接口内部都包含有一定数量的寄存器, 用来存放三种不同信息。为了区分不同的寄存器 (REG),需要给每个REG分配一个地址号,这就类 似于给内存单元编址一样。 I/O接口内部可寻址的REG又称为端口。按接受和传送的 信息有分为数据端口(双向,输入缓冲,输出锁存), 状态端口(一般只读),控制端口(一般只写)。 CPU对外设工作方式的控制和信息的交换最终都归结 为CPU通过IN/OUT指令对各个可寻址端口的读写操作。
(1)统一编址:存储器(内存)与I/O端口的编 址占用同一个地址空间。特点是所有对内存操 作的指令对 I/O 端口同样有效,指令丰富,但 会损失一部分的内存空间。 (2)独立编址:内存与I/O端口对应不同的地址 空间。对I/O端口有专门的指令。缺点是对I/O 端口操作的指令不及统一编址时丰富(例如, 8086/8088中对I/O端口就只有最基本的输入输 出指令),但能最大程度地满足存储空间的寻 址范围。
2018/10/5
21
(4)中断的优先权(Priority)
优先权的管理原则 所谓优先权就是当有多个中断申请 时,根据轻重缓急,规定一个中断响应的次序。优先 权管理原则主要处理下面几个问题: 8086中断优先级 ①不同优先级级中断源同时 优先级 中断/异常 申请中断; ②较低级的正在执行中断服务 内部中断及异常 高 软件中断 程序中,又有较高级的申请; ③较高级的正在执行中断服 NMI中断 低 INTR中断 务程序中,又有较低级的申请; ④ 同级中断的同时申请处理
2018/10/5
4
例:有条件地从输入口取数
;设S_PORT为已定义的状态口地址 ;设D_PORT为已定义的数据口地址 (a) WAIT:IN AL,S_PORT ;取状态信息 TEST AL,80H ;若最高位=1,为满足条件 JZ WAIT ;不满足条件,则循环等待 IN AL,D_PORT ;满足条件输入信息 (b) CHECK: IN TEST JZ IN DONE:RET AL,S_PORT ;取状态信息 WAIT CHECK
• 由开关可选的地址译码
A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 “2-6”: 1 0 1 1 1 1 1 × × × —— 2F8H – 2FFH “4-8”: 1 1 1 1 1 1 1 × × × —— 3F8H – 3FFH
2018/10/5
AEN A3 A4 A5 A6 A7 A9 A8
在80386/486CPU中,内部中断及异常软件中断优 先级高,硬件中断优先级低。
2018/10/5 22
比较:中断控制与子程序调用 中断控制
程序进入方式 程序进入时刻 保护/恢复现场 保护/恢复断点 返回主程序指令 参数传递 外部随机请求
当前指令执行后
2018/10/5 18
向量中断,又称矢量中断。由中断源负责提供中 断服务程序入口地址的有关信息,即中断源通过 接口电路直接提供入口地址或中断源的标识码。 (3)中断向量表 在8086系统中,内存最低端的1K字节地址范 围内(从00000-003FFH),放置256个中断的中 断向量(入口地址),即称为中断向量表。每个 中断矢量在表中占据4个字节,地址较高的两个 字节放入口地址的段地址,地址较低的两个字节 放偏移地址。 中断向量表中的存储地址=中断类型码n×4
20
用途 除法错误(保留) 调试异常(保留) NMI中断(保留) 单字节中断(保留) 溢出中断(保留) 数组边界检查
*:以上为部分已定义的中断类型,其余为操作系统或用户定义的中断类型。
• INTR中断响应过程
CPU接受请求后,进入中断响应总线周期: 1)在中断响应的总线周期中,CPU自动完成保护断 点、关中断 保护断点:(SP)←(SP)-2,((SS):(SP))←(FR) (SP)←(SP)-2,((SS):(SP))←(CS) (SP)←(SP)-2,((SS):(SP))←(IP) 关中断: (IF)←0 (TF)←0
1. 微机系统与外部设备进行数据交换常用的I/O方法√ ——程序直接传送/中断控制/DMA
2. I/O接口基本结构以及与内存编址方法√
3. 中断的基本概念√ ——中断源/向量中断/中断优先级/中断嵌套 ——中断请求与中断响应 4. 8086微机系统的中断结构√
——内部与外部中断/中断类型码/软件中断INT
2018/10/5 13
p.420 附录中关于中断的指令 ; (IF)←0,关中断,禁止INTR中断 ; (IF)←1,开中断,允许INTR中断 ; 中断返回(IP) ←((SS):(SP)), (CS)←((SS):(SP+2)), ; (FR)←((SS):(SP+4)), (SP)←((SP)+6) INT n ;软件中断指令 INTO ;溢出中断(= INT 4) INT ;单字节中断,也称断点中断(INT 3) …………………… CLI STI IRET
• 中断嵌套
– 对具有不同优先级中断源,在低级中断正在处理中, 又有高级中断请求的处理方式
2018/10/5 15
中断嵌套
嵌套:高优先级的中断 请求能打断正在处理 中的低级中断服务程 序;在较高级的中断 服务程序结束后,可 返回被打断的低级中 断服务程序,继续执 行。
优先级:#1 < #2 < #3
取状态信息
取状态信息
满足条件否?
N
满足条件否?
N
AL,80H ;若最高位=1,为满足条件 DONE ;不满足条件,则退出
Y
输入信息
Y
输入信息
AL,D_PORT;满足条件输入信息
(a) (b)
2018/10/5
5
2. 中断方式
• 中断的概念 -中断请求(Interrupt Request) -中断响应(Interrupt Acknowledge) 主程序
图6-12
2 6
4 8 11
6.3 80X86的中断系统
1. 80X86系统中断类别 • 中断——由外部事件(通过硬件产生)通 过CPU的NMI、INTR提出中断请求。 NMI: 非屏蔽中断,用于紧急处理。 INTR:可屏蔽中断,用于一般用户程序。 • 异常——386/486CPU在指令执行的内 部过程中,检测到不正常或非法的情况, 并由此要求进行相应的处理。
2018/10/5 19
图6-14
中断 类型码 0 1 2 3 4 5 …… n …… 255
2018/10/5
8086中断类型与中断向量(p.264)
RAM 类型0 CS:IP 类型1 CS:IP 类型2 CS:IP 类型3 CS:IP 类型4 CS:IP 类型5 CS:IP …… 类型n CS:IP …… 类型255 CS:IP 中断向量 存储地址(H) 00000 00004 00008 0000C 00010 00014 …… n×4 …… 003FC
第6章 输入输出方式及其中断处理
1. 2. 3. 4. I/O方式概论√ I/O接口基本结构及编址方式√ 80x86中断系统√ 可编程中断控制器8259A
存 储 器
地址总线 AB
CPU
I/O 接 口
输 入 设 备
I/O 接 口
输 出 设 备
数据总线 DB 控制总线 CB
2018/10/5
1
第6章知识点及教学要求
主 程 序
中断请求 1#
1#中 断服务 子程序
中断 响应 中断 响应
2#中 断服务 子程序
3#中 断服务 子程序
2#
3#
断点 IRET IRET IRET
2018/10/5
16
2、中断处理的一般过程 (1)中断处理流程图 (图6-13) (2)中断服务子程序结构 1)保护现场(类似于执行通用
子程序) 2)开中断(可选) 3)执行关于当前中断源或异常 处理所要求的I/O等程序操作 4)关中断(可选) 5)恢复现场 6)中断返回
2018/10/5
14
3)中断的控制功能 • CPU响应INTR中断的条件
– 外部有中断请求,且该中断请求没有被屏蔽 – CPU开中断,在当前指令结束后响应中断
• 中断响应、转向中断处理程序和中断返回
– 按矢量中断方式进行
• 中断优先级排队
– 对具有不同优先级中断源,发生同时请求中断的处 理方式,即,高优先级的先处理。
– 若地址值≦255,可直接寻址(寻址范围256个端口); – 否则, 需经寄存器DX间接寻址(寻址范围64K个端口)
2018/10/5
ห้องสมุดไป่ตู้
3
1、程序直接传送方式
1)无条件传送 无条件:每次进行输入 / 输出之前,不需要查 询外设的状态(如,静态开关输入和LED显示输 出 )。 2)有条件传送 又称查询式传送,在每次输入/输出之前,先 要读取外设的状态,满足一定的条件才能进行 一次I/O操作。
N
取得下一条指令
p.263 是当前指令最图6-13
后一个T ?
Y N
INTR=1?
Y N
IF=1?
Flags入栈 清除IF、TF CS、IP入栈
取得中断向量并转向执 行用户中断处理程序
Y
CS、IP出栈 Flags出栈
17
(3)中断响应
• NMI中断——CPU无法屏蔽,自动转向中断类型2处 理过程。 • INTR中断——CPU将产生两个中断响应的总线周期 (p.123),自动保护断点(Flags入栈;IF和TF清 零;CS、IP入栈),进行向量中断处理。 • 向量中断——在中断响应的总线周期中,中断源 的相应接口把中断类型码n放到CPU的DB上,n×4 即为中断向量在中断向量表中的存储地址。CPU转 向从中断向量表取得的中断向量(即,中断服务程 序首地址),并进入相应的中断服务子程序执行过 程。
2018/10/5 8
1、I/O接口电路的基本结构
从编程角度看,接口内部主要包括一个或多个
CPU可以进行读/写操作的寄存器,又称为I/O端口。
各I/O端口由端口地址区分。
AB
C P U
DB
地址 译码 数据 缓冲 控制 电路
I/O端口1
外
I/O端口2
CB
I/O端口3
设
2018/10/5
9
2、I/O接口电路编址方式
中断请求 INTR
中断源
中断服务程序1
IRET
断点 使用堆栈 保护断点
2018/10/5
中断请求 INTR
中断服务程序2
IRET
6
3. DMA方式(直接存储器存取方式)
• 当外设的速度相对很高,且一次传送的数据量 很大时,中断方式的效率就很低。例如,对磁 盘的读写操作,一般的文件都有几十K,几百K, 甚至几兆,通过 DMA 方式利用专门的接口控制 电路,在存储器与高速的外设之间进行大量的 数据交换,而不需要CPU的参与。 • DMA控制器-DMAC,除了具有一般接口的特点 外,CPU可以通过对DMAC相应端口的读/写操作 来控制DMA的工作方式;DMAC在得到总线控制 权后,能够像CPU一样提供相应的控制信号来 控制系统总线,从而实现外设与内存之间高速 大量的数据传输。一般接口电路不具备控制总 线的能力。
2018/10/5 12
• 8086中断
1) 外 部 中 断 : 由 外 部 硬 件 引 起 的 中 断 。 8086 的中断系统,外部中断请求由非屏蔽 中断NMI和可屏蔽中断INTR两个引脚引入。 2) 内部中断: ①内部硬件中断:硬件出错,除数为 0 ,溢 出错误,单步中断,断点中断。 ②内部软件中断:以指令 INT n 调用的中断, n为中断类型码。实际上调用的是系统软件 (主要是操作系统)中的子程序。
2018/10/5 10
3、I/O接口地址译码方法
• 直接地址译码——用译码器及部分逻辑器件组成
图6-11
A5
A6 A7 A8 74LS138
A
B C G2B G2A G1
A9
AEN IOW
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 × × × ××
——中断向量及其在中断向量表中的存储地址 5. 中断控制器8259A组成原理与编程应用
2018/10/5 2
6.1 I/O方式概论
• (p.168) I/O指令: – 输入指令: IN AL,PORT IN AL,DX – 输出指令: OUT PORT,AL OUT DX,AL • PORT: 端口地址
2018/10/5 7
6.2 I/O接口基本结构及编址方式
• 关于I/O“接口”与“端口” I/O接口与CPU之间传送的信息有数据、状态和控制信号 等3大类。每个接口内部都包含有一定数量的寄存器, 用来存放三种不同信息。为了区分不同的寄存器 (REG),需要给每个REG分配一个地址号,这就类 似于给内存单元编址一样。 I/O接口内部可寻址的REG又称为端口。按接受和传送的 信息有分为数据端口(双向,输入缓冲,输出锁存), 状态端口(一般只读),控制端口(一般只写)。 CPU对外设工作方式的控制和信息的交换最终都归结 为CPU通过IN/OUT指令对各个可寻址端口的读写操作。
(1)统一编址:存储器(内存)与I/O端口的编 址占用同一个地址空间。特点是所有对内存操 作的指令对 I/O 端口同样有效,指令丰富,但 会损失一部分的内存空间。 (2)独立编址:内存与I/O端口对应不同的地址 空间。对I/O端口有专门的指令。缺点是对I/O 端口操作的指令不及统一编址时丰富(例如, 8086/8088中对I/O端口就只有最基本的输入输 出指令),但能最大程度地满足存储空间的寻 址范围。
2018/10/5
21
(4)中断的优先权(Priority)
优先权的管理原则 所谓优先权就是当有多个中断申请 时,根据轻重缓急,规定一个中断响应的次序。优先 权管理原则主要处理下面几个问题: 8086中断优先级 ①不同优先级级中断源同时 优先级 中断/异常 申请中断; ②较低级的正在执行中断服务 内部中断及异常 高 软件中断 程序中,又有较高级的申请; ③较高级的正在执行中断服 NMI中断 低 INTR中断 务程序中,又有较低级的申请; ④ 同级中断的同时申请处理
2018/10/5
4
例:有条件地从输入口取数
;设S_PORT为已定义的状态口地址 ;设D_PORT为已定义的数据口地址 (a) WAIT:IN AL,S_PORT ;取状态信息 TEST AL,80H ;若最高位=1,为满足条件 JZ WAIT ;不满足条件,则循环等待 IN AL,D_PORT ;满足条件输入信息 (b) CHECK: IN TEST JZ IN DONE:RET AL,S_PORT ;取状态信息 WAIT CHECK
• 由开关可选的地址译码
A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 “2-6”: 1 0 1 1 1 1 1 × × × —— 2F8H – 2FFH “4-8”: 1 1 1 1 1 1 1 × × × —— 3F8H – 3FFH
2018/10/5
AEN A3 A4 A5 A6 A7 A9 A8
在80386/486CPU中,内部中断及异常软件中断优 先级高,硬件中断优先级低。
2018/10/5 22
比较:中断控制与子程序调用 中断控制
程序进入方式 程序进入时刻 保护/恢复现场 保护/恢复断点 返回主程序指令 参数传递 外部随机请求
当前指令执行后
2018/10/5 18
向量中断,又称矢量中断。由中断源负责提供中 断服务程序入口地址的有关信息,即中断源通过 接口电路直接提供入口地址或中断源的标识码。 (3)中断向量表 在8086系统中,内存最低端的1K字节地址范 围内(从00000-003FFH),放置256个中断的中 断向量(入口地址),即称为中断向量表。每个 中断矢量在表中占据4个字节,地址较高的两个 字节放入口地址的段地址,地址较低的两个字节 放偏移地址。 中断向量表中的存储地址=中断类型码n×4
20
用途 除法错误(保留) 调试异常(保留) NMI中断(保留) 单字节中断(保留) 溢出中断(保留) 数组边界检查
*:以上为部分已定义的中断类型,其余为操作系统或用户定义的中断类型。
• INTR中断响应过程
CPU接受请求后,进入中断响应总线周期: 1)在中断响应的总线周期中,CPU自动完成保护断 点、关中断 保护断点:(SP)←(SP)-2,((SS):(SP))←(FR) (SP)←(SP)-2,((SS):(SP))←(CS) (SP)←(SP)-2,((SS):(SP))←(IP) 关中断: (IF)←0 (TF)←0
1. 微机系统与外部设备进行数据交换常用的I/O方法√ ——程序直接传送/中断控制/DMA
2. I/O接口基本结构以及与内存编址方法√
3. 中断的基本概念√ ——中断源/向量中断/中断优先级/中断嵌套 ——中断请求与中断响应 4. 8086微机系统的中断结构√
——内部与外部中断/中断类型码/软件中断INT
2018/10/5 13
p.420 附录中关于中断的指令 ; (IF)←0,关中断,禁止INTR中断 ; (IF)←1,开中断,允许INTR中断 ; 中断返回(IP) ←((SS):(SP)), (CS)←((SS):(SP+2)), ; (FR)←((SS):(SP+4)), (SP)←((SP)+6) INT n ;软件中断指令 INTO ;溢出中断(= INT 4) INT ;单字节中断,也称断点中断(INT 3) …………………… CLI STI IRET
• 中断嵌套
– 对具有不同优先级中断源,在低级中断正在处理中, 又有高级中断请求的处理方式
2018/10/5 15
中断嵌套
嵌套:高优先级的中断 请求能打断正在处理 中的低级中断服务程 序;在较高级的中断 服务程序结束后,可 返回被打断的低级中 断服务程序,继续执 行。
优先级:#1 < #2 < #3
取状态信息
取状态信息
满足条件否?
N
满足条件否?
N
AL,80H ;若最高位=1,为满足条件 DONE ;不满足条件,则退出
Y
输入信息
Y
输入信息
AL,D_PORT;满足条件输入信息
(a) (b)
2018/10/5
5
2. 中断方式
• 中断的概念 -中断请求(Interrupt Request) -中断响应(Interrupt Acknowledge) 主程序
图6-12
2 6
4 8 11
6.3 80X86的中断系统
1. 80X86系统中断类别 • 中断——由外部事件(通过硬件产生)通 过CPU的NMI、INTR提出中断请求。 NMI: 非屏蔽中断,用于紧急处理。 INTR:可屏蔽中断,用于一般用户程序。 • 异常——386/486CPU在指令执行的内 部过程中,检测到不正常或非法的情况, 并由此要求进行相应的处理。
2018/10/5 19
图6-14
中断 类型码 0 1 2 3 4 5 …… n …… 255
2018/10/5
8086中断类型与中断向量(p.264)
RAM 类型0 CS:IP 类型1 CS:IP 类型2 CS:IP 类型3 CS:IP 类型4 CS:IP 类型5 CS:IP …… 类型n CS:IP …… 类型255 CS:IP 中断向量 存储地址(H) 00000 00004 00008 0000C 00010 00014 …… n×4 …… 003FC
第6章 输入输出方式及其中断处理
1. 2. 3. 4. I/O方式概论√ I/O接口基本结构及编址方式√ 80x86中断系统√ 可编程中断控制器8259A
存 储 器
地址总线 AB
CPU
I/O 接 口
输 入 设 备
I/O 接 口
输 出 设 备
数据总线 DB 控制总线 CB
2018/10/5
1
第6章知识点及教学要求
主 程 序
中断请求 1#
1#中 断服务 子程序
中断 响应 中断 响应
2#中 断服务 子程序
3#中 断服务 子程序
2#
3#
断点 IRET IRET IRET
2018/10/5
16
2、中断处理的一般过程 (1)中断处理流程图 (图6-13) (2)中断服务子程序结构 1)保护现场(类似于执行通用
子程序) 2)开中断(可选) 3)执行关于当前中断源或异常 处理所要求的I/O等程序操作 4)关中断(可选) 5)恢复现场 6)中断返回
2018/10/5
14
3)中断的控制功能 • CPU响应INTR中断的条件
– 外部有中断请求,且该中断请求没有被屏蔽 – CPU开中断,在当前指令结束后响应中断
• 中断响应、转向中断处理程序和中断返回
– 按矢量中断方式进行
• 中断优先级排队
– 对具有不同优先级中断源,发生同时请求中断的处 理方式,即,高优先级的先处理。
– 若地址值≦255,可直接寻址(寻址范围256个端口); – 否则, 需经寄存器DX间接寻址(寻址范围64K个端口)
2018/10/5
ห้องสมุดไป่ตู้
3
1、程序直接传送方式
1)无条件传送 无条件:每次进行输入 / 输出之前,不需要查 询外设的状态(如,静态开关输入和LED显示输 出 )。 2)有条件传送 又称查询式传送,在每次输入/输出之前,先 要读取外设的状态,满足一定的条件才能进行 一次I/O操作。