Download presentation
Presentation is loading. Please wait.
Published byKarolína Havlová Modified 6年之前
1
输入/输出及接口 输入/输出的传送方式 中断技术 80x86/Pentium中断系统 8259A可编程中断控制器 中断程序设计
第6章 输入/输出和中断 输入/输出及接口 输入/输出的传送方式 中断技术 80x86/Pentium中断系统 8259A可编程中断控制器 中断程序设计
2
CPU 地址总线 AB 输 存 I/O 出 储 接 入 口 设 器 备 数据总线 DB 控制总线 CB 微型计算机的结构示意图
第6章 输入/输出和中断 数据总线 DB 控制总线 CB 地址总线 AB 存 储 器 I/O 接 口 输 入 设 备 出 CPU 微型计算机的结构示意图 南京航空航天大学 电子信息工程学院
3
为什么外设不能象存贮器一样直接挂在CPU上?
第6章 输入/输出和中断 6.1 输入/输出及接口 键盘 鼠标 CRT 打印机 绘图仪 计算机 外设 接口 为什么外设不能象存贮器一样直接挂在CPU上? 外设功能复杂: (1)仅作输入(输出)、入/出兼作 (2)格式多种(并串), 位数多种 (3)外设品种繁多 (光、机、电、声、磁等) (4)信号形式有脉冲、模拟量 或数字量 (5)速度不匹配 存贮器功能单一: (1)传送方式单一 (传送一个字节) (2)品种单一 RAM、ROM(控制信号确定)(3)格式单一 (并行数字信号) (4)工作速度匹配 南京航空航天大学 电子信息工程学院
4
6.1.1 I/O信息的组成 数据信息、状态信息、控制信息 (1) 数据信息 —— 要交换的数据本身,有并行和串行两种传送方式
第6章 输入/输出和中断 I/O信息的组成 数据信息、状态信息、控制信息 (1) 数据信息 —— 要交换的数据本身,有并行和串行两种传送方式 ① 数字量:按一定的编码标准(2#/ASCII码 ), 由若干位组合所表示的数或字符。 如:通过键盘/CRT/打印机等与CPU交换的信息。 ② 模拟量:现场信息(如温度/压力/流量/位移等非电量) 经传感器而转换成的电量(电压、电流)。 模拟量经A/D、D/A转换器在CPU与外设间交换。 ③ 开关量:一位2#信息:0、1。 如:开关的断开/闭合;控制电机的启/停等。 通常开关量要经过相应的电平转换才能与计算机连接。 南京航空航天大学 电子信息工程学院
5
CPU对外设输入/输出的控制,通过对接口中各I/O端口的读/写操作完成
第6章 输入/输出和中断 (2)状态信息 ——在CPU与外设之间交换数据时的联络信息 对 输入接口, CPU是否准备好接收数据:如 “READY” ? 对输出接口,外设是否准备好接收数据: 如 “BUSY” ? (3)控制信息 —— CPU发给外设的命令信息 如:A/D转换器的启/停信号,设置外设工作模式的信息等。 接口(interface)与端口(port): 传送这三种信息(数据、状态、控制)的接口电路中的寄存器 称为数据、状态和控制端口。 不同的寄存器(组)对应不同的端口,以地址来区别。 端口由一个或多个寄存器组成。 接口由若干个端口加上相应的控制逻辑组成。 CPU对外设输入/输出的控制,通过对接口中各I/O端口的读/写操作完成
6
6.1.2 I/O接口概述 1. I/O接口的功能 2. I/O接口的构成 ① 对输入/输出数据缓冲、隔离和锁存;
第6章 输入/输出和中断 I/O接口概述 ① 对输入/输出数据缓冲、隔离和锁存; ② 完成信息格式的变换,如串-并转换等; ③ 实现电气特性的匹配; ④ 选择设备或地址译码等。 1. I/O接口的功能 端口 2. I/O接口的构成 实现对CPU数据总线驱动能力的匹配 实现各端口寻址操作 实现对各端口的读/写操作和时序控制
7
功能选择的灵活性:可编程接口/不可编程接口; 通用性: 通用接口(8253 定时/计数器、8259 中断控制器、
第6章 输入/输出和中断 3. I/O接口类型与I/O接口电路分类 I/O接口类型 早期:串行接口(RS-232) / 并行接口 。 现代:USB接口、IEEE1394接口、VGA接口和RJ-45接口等。 I/O接口电路分类 按数据传送方式:并行接口/串行接口; 功能选择的灵活性:可编程接口/不可编程接口; 通用性: 通用接口(8253 定时/计数器、8259 中断控制器、 8257 DMA、8251串行接口、 8255并行接口等) 专用接口(CRT 8275、键盘显示 8279、SATA硬盘、 U盘接口等) 南京航空航天大学 电子信息工程学院
8
6.1.3 I/O端口的编址 优点:对I/O口的访问灵活方便,有利于提高端口数据的 处理能力。
第6章 输入/输出和中断 I/O端口的编址 为了区分接口电路的各个寄存器,系统为它们分配不同的 地址,称为I/O端口地址,以便对它们进行寻址。 I/O端口有两种编址方式:存储器映像方式、I/O独立编址方式 存储器映像方式 I/O端口与存储器共享一个寻址空间,统一编址。 在这种系统中,CPU用同样的指令对I/O端口和存储器单元 进行访问。 例:Motorola的M6800系列、日立H8S单片机系列等 优点:对I/O口的访问灵活方便,有利于提高端口数据的 处理能力。 缺点:I/O端口占用了主存地址,相对减少了主存的可用 范围。 南京航空航天大学 电子信息工程学院
9
(2)CPU使用地址总线中A0~A15来寻址I/O口,
第6章 输入/输出和中断 2. I/O端口独立编址(I/O映射)方式 主存地址空间和I/O端口地址空间相互独立,分别编址。 CPU通过指令来区分是访问I/O口还是存储单元。 优点:主存和I/O端口的地址可用范围都比较大。 缺点:I/O指令的功能一般比较弱,在I/O操作中必须借助 CPU的寄存器进行中转。 80x86系列微处理器采用独立的I/O编址方式 (1)CPU通过IO/M来区分对MEM还是对I/O操作。 (2)CPU使用地址总线中A0~A15来寻址I/O口, 最大I/O空间是64K个字节端口(或32K个字端口)。 若用直接寻址方式寻址外设,可寻址256个端口,A0~A7译码。 若用DX间接寻址外设,端口地址是16位的,用A15~A0译码。 (3)I/O寻址通常采用的是部分译码。 对于8086系统而言,最低端的地址线A0往往不参与译码, 选择其中的偶地址作为I/O地址。
10
PC/XT、PC/AT及Pentium系列微机系统的I/O空间分配见表6-1/6-2 。
第6章 输入/输出和中断 3. I/O端口地址选用的原则 自行设计接口电路或给微机系统添加接口卡时,必须避免端口 地址发生冲突 。 系统申明保留的地址不要使用。用户可使用300H--31FH地址。 在PC/XT中,扩展总线上用A9~A0作为外设端口译码(部分译 码方式),共可寻址210=1K个端口。 (1)当A9 = 0时,寻址主机板上的512个外设端口。 (2)当A9 = 1时,寻址I/0扩展槽上的512个外设端口。 80386微处理器或此后的微处理器构成的微机系统,采用全译码的方法. PC/XT、PC/AT及Pentium系列微机系统的I/O空间分配见表6-1/6-2 。
11
(1)将来自地址总线上的地址译为所需要访问端口的选通信号 (2)I/O端口地址译码电路结构
第6章 输入/输出和中断 4. I/O接口的访问控制 微机系统的每个端口应有唯一的端口地址。 I/O端口读写控制的关键:除了由译码器产生片选信号外,还必 须将读/写信号(RD、WR、IO/M)加入接口电路的选通或控制。 5. I/O端口的地址译码 (1)将来自地址总线上的地址译为所需要访问端口的选通信号 (2)I/O端口地址译码电路结构 ①高位地址线(或 组合CPU的控制信号),经译码电路产生I/O接 口电路的片选信号CS,实现系统中的接口电路(芯片)寻址 。 ②低位地址线直接接到I/O接口电路(芯片)的地址引脚,进行I/O 接口电路(芯片)的片内端口寻址。 ③地址信号选择:由地址范围决定。 ④端口的读写控制:输入需要缓冲,输出需要锁存。 南京航空航天大学 电子信息工程学院
12
在数字电路中实现逻辑运算的电路,简称逻辑门或门电路。
第6章 输入/输出和中断 逻辑门(门电路) 在数字电路中实现逻辑运算的电路,简称逻辑门或门电路。 逻辑门的表示方法 A B Y & ≥1 1 逻辑门 国家标准符号 教材使用符号 与 门 Y = A∧ B 或 门 Y = A∨ B 非 门 Y = A 南京航空航天大学 电子信息工程学院
13
异或门 Y = A ∨ B 与非门 Y = A∧ B 或非门 Y = A∨ B
第6章 输入/输出和中断 逻辑门 国家标准符号 教材使用符号 异或门 Y = A ∨ B 与非门 Y = A∧ B 或非门 Y = A∨ B A B Y ≥1 & =1 南京航空航天大学 电子信息工程学院
14
② 逻辑门有两种输出状态:高电平(逻辑1)、低电平(逻辑0) ③ 三态门比逻辑门增加了一个控制端EN(又称使能端),
第6章 输入/输出和中断 ② 逻辑门有两种输出状态:高电平(逻辑1)、低电平(逻辑0) ③ 三态门比逻辑门增加了一个控制端EN(又称使能端), 当控制端有效时,三态门处于工作态,否则处于高阻态。 三态门 A Y EN 高电平 低电平 高阻态 逻辑门 高电平 低电平 A Y 高阻态的特点: 处于高阻状态的三态门, 其输出端既不会有电流流出,也不会有电流流入。 如果与总线相连,此时三态门电路仍连在总线, 但电气上与总线处于断开状态,对总线上的信号无影响。
15
CPU 在总线结构的微机系统中, 任一时刻只能有一个设备利用总线进行数据传送, 输入设备的数据线应通过三态门与系统相连。 总线 输入设备1
第6章 输入/输出和中断 在总线结构的微机系统中, 任一时刻只能有一个设备利用总线进行数据传送, 输入设备的数据线应通过三态门与系统相连。 总线 CPU 输入设备1 EN1 EN2 输入设备2 (1)当设备1与CPU进行数据传送时,设备2的数据信号应处于三态 (2)当设备2与CPU进行数据传送时,设备1的数据信号应处于三态 南京航空航天大学 电子信息工程学院
16
总线 CPU 输出设备利用锁存器接收CPU输出的数据。 输出设备1 CP1 锁存器1 输出设备2 CP2 锁存器2 输出设备3 CP3
第6章 输入/输出和中断 输出设备利用锁存器接收CPU输出的数据。 CPU 总线 输出设备1 CP1 锁存器1 输出设备2 CP2 锁存器2 输出设备3 CP3 锁存器3 (1)使某输出设备锁存器的控制端处于触发状态,数据通过该锁存器. (2)当触发信号消失,数据锁存在锁存器中, 外设侧数据不随总线侧数据的变化而变化,使慢速外设有足够 的时间处理数据。 南京航空航天大学 电子信息工程学院
17
6.1.4 简单的I/O接口 I/O接口硬件分类 不可编程 可编程 8253 定时/计数器 8259 中断控制器 通用接口 8257 DMA
第6章 输入/输出和中断 简单的I/O接口 I/O接口硬件分类 不可编程 可编程 8253 定时/计数器 8259 中断控制器 通用接口 DMA 8250、8251 串行接口芯片 或 、8155并行接口芯片 硬盘/U盘控制器 专用接口 CRT 键盘显示 不可编程的I/O接口属简单I/O接口,典型的芯片是三态缓 冲器和数据锁存器。 如: 74LS244,245; LS373,374 增强总线的负载能力并隔离 南京航空航天大学 电子信息工程学院
18
AEN为低时,AEN为高,表示CPU掌管总线
第6章 输入/输出和中断 1. 三态缓冲器 凡输入数据到CPU的设备须经三态缓冲器挂在CPU的数据总 线上。当该设备被选通时,占据总线并送上数据,否则让出 总线(浮空),以防总线冲突。 常用缓冲器:74LS244(单向),74LS245(双向)。 IN AL,端口 使RD、IO/M有效。 IOR=IO /M+RD AEN为低时,AEN为高,表示CPU掌管总线
19
输入缓冲电路 当读有效(IN AL,端口)时,才将缓冲器中的三态门打开, 使外设的数据进入系统的数据总线;
第6章 输入/输出和中断 输入缓冲电路 74LS245 2 18 A B 3 17 A B 1 1 4 16 A B 2 2 微处理 器系统 5 15 A B 外部输 入设备 3 3 6 14 A B 4 4 7 A B 13 5 5 8 A B 12 6 6 9 A B 11 7 7 IOR 19 DIR=1,A → B DIR=0,B → A E 译码片选 1 DIR 当读有效(IN AL,端口)时,才将缓冲器中的三态门打开, 使外设的数据进入系统的数据总线; 其它时间,三态门处于高阻状态,不影响总线上的其它操作。 南京航空航天大学 电子信息工程学院
20
2. 数据锁存器 IOW=IO /M+WR 南京航空航天大学 电子信息工程学院 当CPU输出数据到外设时,需将输出的数据锁存,以便较慢的
第6章 输入/输出和中断 2. 数据锁存器 当CPU输出数据到外设时,需将输出的数据锁存,以便较慢的 外设有足够的时间进行处理,而CPU则脱身去做其它的工作。 锁存器:74LS373,低电平锁存,高电平直通。 在微机接口电路中,常用74LS273(上升沿触发)D触发器, 上升沿将数据Di输出。 上升沿将上升沿之前的数据打入273,并由273输出。 当触发信号消失,273输出端数据不再变化。 设端口地址为: B 即0200H,则 MOV DX, 0200H OUT DX, AL 使WR、IO/M有效。 南京航空航天大学 电子信息工程学院 IOW=IO /M+WR
21
输出锁存 南京航空航天大学 电子信息工程学院 当触发信号消失,不管总线上的数据(锁存器输入端)如何变
第6章 输入/输出和中断 输出锁存 74LS273 3 2 D Q 4 5 D Q 1 1 7 6 D Q 2 2 微处理 器系统 8 外部输 出设备 D Q 9 3 3 13 D Q 12 4 4 14 D Q 15 5 5 17 D Q 16 6 6 18 D Q 19 7 7 IOW 11 CLK 译码片选 1 CL R 74LS32 +5V 锁存器控制端处于触发状态(OUT 端口,AL)时, 总线上数据进入锁存器; 当触发信号消失,不管总线上的数据(锁存器输入端)如何变 化,只要没有再次使锁存器触发信号有效,锁存器的输出端就 一直保持原来锁存的信息不变。 南京航空航天大学 电子信息工程学院 21
22
6.2 输入/输出的传送方式 6.2.1 程序控制的输入和输出 ——在程序中安排相应的I/O指令来完成和外设间的信息交换
第6章 输入/输出和中断 6.2 输入/输出的传送方式 CPU与外设之间信息交换的方式可分为三种: 程序控制的输入和输出 中断控制的输入和输出 直接存储器存取(DMA) 程序控制的输入和输出 ——在程序中安排相应的I/O指令来完成和外设间的信息交换 (1)当编程人员预先知道何时进行数据交换时,使用这种方式。 根据需要将有关的I/O指令置于程序的相应位置。 (2)这种方式又分为 ‘无条件传送方式和查询传送方式’ 两种。 1. 无条件传送(外设始终是准备好的,与CPU始终同步) ——无需查询外设状态而直接使用I/O指令进行输入输出 特点:简单,适用于慢速外设(LED(输出)/乒乓开关(输入)) CPU认为需要时,随时与外设交换数据。
23
IN AL,DX ;地址DX有效(相应地址及片选信号有效) ;RD=0,IO/M=1(IOR=0)
第6章 输入/输出和中断 接口特点 CPU的DB←I/O接口(输入缓冲器)←外设 74LS245 2 18 A B 3 17 A B 1 1 4 16 A B 2 2 微处理 器系统 5 15 A B 外部输 入设备 3 3 6 14 A B 4 4 7 A B 13 5 5 8 A B 12 6 6 9 A B 11 7 7 IOR 19 DIR=1,A → B DIR=0,B → A E 译码片选 1 DIR IN AL,DX ;地址DX有效(相应地址及片选信号有效) ;RD=0,IO/M=1(IOR=0) 南京航空航天大学 电子信息工程学院
24
OUT DX,AL ;地址DX有效(相应地址片选信号有效), ;WR=0,IO/M=1(IOW=0)
第6章 输入/输出和中断 接口特点 CPU的DB→I/O接口(输出锁存器)→外设 74LS273 3 2 D Q 4 5 D Q 1 1 7 6 D Q 2 2 微处理 器系统 8 9 外部输 出设备 D Q 3 3 13 D Q 12 4 4 14 D Q 15 5 5 17 D Q 16 6 6 18 D Q 19 7 7 IOW 11 CLK 译码片选 1 CL R 74LS32 +5V OUT DX,AL ;地址DX有效(相应地址片选信号有效), ;WR=0,IO/M=1(IOW=0) 南京航空航天大学 电子信息工程学院
25
例:P235 输入/输出用相同的端口地址 接口电路的一般形式 P235 图6-7 图中地址译码低电平有效 第6章 输入/输出和中断
第6章 输入/输出和中断 接口电路的一般形式 P235 图 图中地址译码低电平有效 例:P235 输入/输出用相同的端口地址 ① 图中锁存器是低电平直通, 高电平锁存。若使用273,则 在上升沿输出并锁存数据。 ② 74系列锁存器是373或374。373 是低电平锁存,高电平直通! NEXT:MOV DX,PORT_IN IN AL,DX ;读入状态 NOT AL OUT DX,AL ;控制显示 CALL DELAY JMP NEXT
26
—— 一种CPU主动、外设被动的I/O操作方式
第6章 输入/输出和中断 2. 查询传送 —— 一种CPU主动、外设被动的I/O操作方式 输出:CPU对 “外设BUSY?” 进行查询,不忙则输出。 输入:CPU查 “外设数据READY?” ,若准备好则读入。 特点:避免了对端口的“盲读”、“盲写” ,数据传送的可靠性 高,硬件接口相对简单。 缺点:CPU工作效率低,I/O响应速度慢。 READY? 读取状态端口 读/写数据端口 Y N 状态端口复位 外设要求:状态口和数据口 在有多个外设的系统中, CPU的查询顺序由外设的优 先级确定。 查询控制的程序流程
27
程序查询方式的输入接口电路(数据准备好, READY为1)
第6章 输入/输出和中断 (1)查询输入(当外设数据准备好,读入) 数据缓冲器 (输入端口) 状态缓冲器 (输入端口) 输 入 设 备 数据端口读选通 状态端口读选通 DB(数据、状态) 锁 存 器 输入数据 输入选通 R Q D +5V ④ ⑤ ① READY D7 ③ ② 程序查询方式的输入接口电路(数据准备好, READY为1)
28
查询式输入程序: 南京航空航天大学 电子信息工程学院 数据总线 IN_TEST:IN AL,STATUS ;读入状态信息
第6章 输入/输出和中断 (DATAS) 图中地址译码低电平有效 (STATUS) 查询式输入程序: 状态口STATUS ,数据口DATAS IN_TEST:IN AL,STATUS ;读入状态信息 TEST AL,80H ;检查READY是否为1(D7位) JZ IN_ TEST ;条件不满足,继续查询 IN AL,DATAS ;条件满足,读入8位数据 数据总线 南京航空航天大学 电子信息工程学院
29
输 出 设 备 (2)查询输出(当外设空闲时,输出) 数据端口写选通 状态缓冲器 (输入端口) 状态端口读选通 BUSY(1bit)
第6章 输入/输出和中断 (2)查询输出(当外设空闲时,输出) 程序查询输出方式接口电路 输出选通 数据锁存器 (输出端口) 状态缓冲器 (输入端口) 输 出 设 备 R Q D +5V DB(数据、状态) BUSY(1bit) ACK 状态端口读选通 数据端口写选通 ③ ② ④ ① ⑥ ⑤ CPU输出时,置“BUSY”忙(1)。 外设输出完毕,将“BUSY”清0。
30
查询式输出程序: 南京航空航天大学 电子信息工程学院 数据总线 图中地址译码低电平有效 MOV BX,OFFSET STORE
第6章 输入/输出和中断 图中地址译码低电平有效 查询式输出程序: MOV BX,OFFSET STORE OUT_TEST:IN AL,STATUS ; 读入状态信息 AND AL,80H ; 检查BUSY位(D7位) JNZ OUT_TEST ; BUSY则等待 MOV AL,[BX] ; 空闲, 从缓冲区STORE中取数据 OUT DATAS,AL ; 输出8位数据 INC BX … 数据总线 南京航空航天大学 电子信息工程学院
31
6.2.2 中断控制的输入和输出 —— CPU被动而外设主动的I/O操作方式 特点: 外 设 中断工作过程
第6章 输入/输出和中断 中断控制的输入和输出 —— CPU被动而外设主动的I/O操作方式 特点: (1) CPU和外设大多时间处在并行工作状态,只在CPU响应外设的中断申请后,进入数据传送过程。 (2)提高了CPU的效率,使系统有了实时处理功能。 中断方式下CPU执行程序流程 发申请 中断服务程序 外 设 缺点:硬件电路和处理过程比较复杂。 中断工作过程 外设需要CPU服务时 外设→I/O接口→向CPU发中断请求,INTR=H (中断请求有效) CPU执行完当前指令后, (注: 若IF = 1) CPU → I/O接口 →向外设发中断响应,/INTA = L CPU执行中断服务程序 CPU←→I/O接口←→外设读写数据
32
CPU对中断请求的检测是有规律的:一般在每条指令的最后 一个时钟周期采样中断请求输入引脚;
第6章 输入/输出和中断 中断可被响应的条件: 中断请求触发器置位; CPU内部开放中断; CPU未处理更高级中断; CPU现行指令执行完。 注意: 中断请求是外设随机向CPU提出的; CPU对中断请求的检测是有规律的:一般在每条指令的最后 一个时钟周期采样中断请求输入引脚; 进行传送的中断服务程序是预先设计好的; 使用中断方式时: 外设准备数据,CPU执行主程序,CPU与外设并行工作; CPU响应中断进行数据传输时,CPU与外设是串行工作。
33
6.2.3 直接数据通道传送(DMA方式) —— 在外设与内存间直接传送数据的方式 中断方式仍然是通过CPU执行程序来实现数据传送的。
第6章 输入/输出和中断 直接数据通道传送(DMA方式) —— 在外设与内存间直接传送数据的方式 中断方式仍然是通过CPU执行程序来实现数据传送的。 缺点:①大量的数据在磁盘与内存间交换需大量的时间。 ②高速I/O设备时或成组数据交换时,显得速度太慢。 DMA方式,CPU不参加传送操作,省去了CPU 取指/取数/送数 等操作。在数据传送过程中,没有保存/恢复现场之类的工作。 内存地址修改、传送字个数的计数等,是用硬件直接实现的。 南京航空航天大学 电子信息工程学院
34
流程图 南京航空航天大学 电子信息工程学院 DMA方式的工作过程:
第6章 输入/输出和中断 DMA方式的工作过程: ① CPU设置DMAC的工作方式,将存贮区首址/传送字节数DMAC内部Reg。 ② 外设向DMAC发出DMA请求,DMAC向CPU发出HOLD信号。 ③ CPU接收到HOLD信号后,在当前总线周期结束后发出HLDA信号,暂停正在执行的程序,且放弃对总线的控制。 ④ DMAC回应外设,表示响应该请求。 ⑤ DMAC向存贮器送存贮单元地址,并分别向外设及内存送IOR及MEMW,完成一次字节传送。 ⑥ DMAC中数据长度计数器减1,地址变化,重复⑤,直到传送完毕。 ⑦ DMA结束,DMAC撤消DMA请求,CPU再次恢复对总线控制权。 流程图 传送结束? HLDA 发存储器地址 传送数据 修改地址 指针 DMA结束 N Y 南京航空航天大学 电子信息工程学院
35
6.3 中断技术 6.3.1 中断的基本概念 中断——是一种使CPU终止当前程序而转去处理特殊事件的操作。
第6章 输入/输出和中断 6.3 中断技术 中断的基本概念 中断——是一种使CPU终止当前程序而转去处理特殊事件的操作。 中断可由外设通过硬件随机地或预先在程序中安排指令来触发。 1. 中断源——引起中断的事件 (1)外部中断源(硬中断,如INTR、NMI引脚上出现的中断源) ① I/O设备 如 键盘、显示器(CRT)、打印机等。 ② 数据通道 如 磁盘、采样电路等。 ③ 实时钟 如 外部所需的定时电路等。 ④ 故障源 如 掉电、存储器奇偶校验错等。 (2)内部中断源(软中断) ① 指令执行产生的异常 如 被0除、溢出、单步执行等。 ② 执行INT软中断指令 如 微机系统中DOS功能调用INT 21H、 BIOS功能调用INT 10H等。 中断服务(子)程序:处理中断源,完成其所要求功能的程序。
36
硬件中断(INTR或NMI); 软中断:除数为0、溢出…。 (2)中断判优 ① 在多个中断源情况下,由设计者将它们事先排队(硬件),
第6章 输入/输出和中断 2. 中断处理过程(以可屏蔽中断处理为例) 一个完整的中断处理过程包括5个部分: (1)中断请求 硬件中断(INTR或NMI); 软中断:除数为0、溢出…。 (2)中断判优 ① 在多个中断源情况下,由设计者将它们事先排队(硬件), 当同时到达时,CPU根据优先级处理当前优先级最高的中断源。 ② 中断判优的另一作用是决定是否可能实现中断嵌套。 南京航空航天大学 电子信息工程学院
37
① 当IF=1且INTR有请求,CPU响应中断; ② CPU送出INTA,外设将中断类型码 数据总线;
第6章 输入/输出和中断 (3)中断响应 ① 当IF=1且INTR有请求,CPU响应中断; ② CPU送出INTA,外设将中断类型码 数据总线; ③ 将标志寄存器FR进栈保护,同时使IF ←0 ,TF←0 ; ④ 将断点地址CS和IP顺序进栈保护; ⑤ 将中断类型码×4,找出中断子程序入口地址,转中断服务。 (4)中断处理 ① 保护现场; ② 开中断(使IF=1,STI),保证可以实现中断嵌套; ③ 执行中断服务; ④ 关中断(使IF=0,CLI),恢复现场。 (5)中断返回 IRET 恢复断点IP 、 CS 恢复标志寄存器FR 南京航空航天大学 电子信息工程学院
38
6.3.2 中断优先权 可事先给各中断源安排中断优先级次序:有软/硬件两种方法。 ①不同级别中断发生,按级别高低处理。
第6章 输入/输出和中断 中断优先权 可事先给各中断源安排中断优先级次序:有软/硬件两种方法。 当多个中断源同时申请时,按中断优先权处理中断的一般原则: ①不同级别中断发生,按级别高低处理。 ②处理低级别中断过程中又遇高级别的中断,暂停低,转高的服务。 ③处理高级别的过程中又遇低级别或同一级别的中断,不予理睬, 待处理完后再服务它们。 ④同一级别按先后排队。 CPU 查询 1. 软件排优 —中断优先级由软件查询顺序决定 ①将各中断源的中断申请信号“或”(线与)起来,作为INTR信号; ②同时将各申请信号经状态端口读入CPU进行判断,判断时的先后顺序即优先级次序。 南京航空航天大学 电子信息工程学院
39
这段查询程序安排在中断服务程序的开始处。
第6章 输入/输出和中断 这段查询程序安排在中断服务程序的开始处。 优点: ① 硬件电路简单 ② 无需优先权的硬件排队电路 ③ 可随时修改优先级 缺点: 软件查询,影响中断响应的实时性。 2. 硬件优先权排队电路 (1)简单硬件方式(菊花链电路) (2)专用硬件方式(可编程中断控制器) ——在PC机中解决中断优先权管理
40
越靠近CPU的接口,中断优先级别越高。 南京航空航天大学 电子信息工程学院 设某中断源(设备2)请 求中断 “1”,则: INTR=1;
第6章 输入/输出和中断 越靠近CPU的接口,中断优先级别越高。 1 5V 设某中断源(设备2)请 求中断 “1”,则: INTR=1; CPU→INTA(0)。 第一级菊花链逻辑电路输 出中断应答信号(1); 同时输出(0)到下一级 菊花链逻辑电路; 第二级菊花链逻辑电路输 出中断应答信号(0); 同时输出(1)到下一级 南京航空航天大学 电子信息工程学院
41
6.4 80x86/Pentium中断系统 6.4.1 中断结构 非屏蔽中断 NMI 可屏蔽中断 INTR 外部(硬件)中断 256种中断源
第6章 输入/输出和中断 x86/Pentium中断系统 中断结构 256种中断源 外部(硬件)中断 内部(软件)中断 非屏蔽中断 NMI 可屏蔽中断 INTR INT n 除法出错 单步中断 INTO 溢处中断 每个中断源有对应的类型码 (0~255) 供CPU识别 中断源的优先级顺序: 内部中断(除数为0、INTO、INT n)→ NMI → INTR →单步中断
42
1. 外部中断 (1)非屏蔽中断 (2)可屏蔽中断 南京航空航天大学 电子信息工程学院 由NMI引脚出现 上升沿 触发 ,高电平维持2个T。
第6章 输入/输出和中断 1. 外部中断 (1)非屏蔽中断 由NMI引脚出现 上升沿 触发 ,高电平维持2个T。 不受中断允许标志IF的限制,中断类型码固定为2。 CPU执行完当前指令后立即响应并进入相应的处理。 在PC机中: MEM或I/O通道有奇偶校验错 或 /80287产生异常 都会产生NMI。 (2)可屏蔽中断 由外设产生,从CPU的INTR端引入 ,高电平触发。 受中断允许标志IF的限制,在IF=1,INTR=1时,CPU可响应。 CPU响应时送出两个INTA脉冲,外设则送上中断类型码CPU。 南京航空航天大学 电子信息工程学院
43
——CPU根据指令或者对标志Reg中某个标志位的设置而产
第6章 输入/输出和中断 2. 内部中断 ——CPU根据指令或者对标志Reg中某个标志位的设置而产 生,或由CPU本身启动(除法出错),与外部硬件无关。 (1)除法出错中断(0型中断) CPU执行除法指令DIV、IDIV时,若发现除数为0或商超过了 存放它的Reg所能表示的范围,则产生0型中断。 其中断处理由操作系统安排。 (2)单步中断(1型中断) 若TF=1,则80x86处于单步工作方式。常用于程序调试。 注意: ① 当执行一条指令使TF=1,则下条指令结束立即产生1型中断。 进入单步中断时,PSW入栈且TF=0, IF=0,所以 单步中断服务过程中不会再引起单步中断。 ② x86系统中,没有操作TF的专门指令。(配合PUSHF和POPF)
44
(3) INTO指令(4型中断) (4)INT n指令(n为中断类型码) 一般为双字节指令。
第6章 输入/输出和中断 (3) INTO指令(4型中断) (1) (2) (3)的 中断类型码 0/1/4自动形成 若算法操作结果产生溢出(OF=1),则执行INTO指令后 立即产生一个中断类型号为4的中断。 所有软中断(除单步中断)不受FR的影响 (4)INT n指令(n为中断类型码) 一般为双字节指令。 特例:INT 3(断点中断) ,为单字节指令。 在程序插入INT 3的地方引起一个中断,好象产生一个 断点,又称断点中断。 在断点处可显示Reg、mem的内容,以便调试。 386及以上CPU扩展了一些内部中断,中断源分为(外部)中断与 (内部)异常两类 。异常可归为三类:失效、陷阱和终止。 失效 :在引起失效的指令启动之后、执行之前被检测到,处理异常 的中断服务完成后返回该条指令,重新启动并执行完毕 。 陷阱:在产生陷阱的指令执行完后才被报告,其中断服务程序结束后 返回到主程序中该条指令的下一条指令。 终止:是一种对引起异常的指令的确切位置无法确定的异常。
45
6.4.2 中断向量表 中断类型码:256个中断源对应0~255 中断向量:中断服务程序入口地址 中断向量表:中断向量存放区,内存区的
第3章 80x86/Pentium指令系统 中断向量表 中断类型码:256个中断源对应0~255 中断向量:中断服务程序入口地址 中断向量表:中断向量存放区,内存区的 最低1K字节(0:0000H开始) 中断类型码n ×4:类型n的中断向量的地址 中断类型码引导程序转移到中断服务程序 见P245、P248的表6-3、6-4
46
6.4.3 中断响应过程 1. 内部中断响应过程 (1)获得中断类型码 由INT n指令获得 或 按预定方式获得(专用中断:0、1、3、4)
第6章 输入/输出和中断 中断响应过程 1. 内部中断响应过程 (1)获得中断类型码 由INT n指令获得 或 按预定方式获得(专用中断:0、1、3、4) (2)将中断类型码×4,作为中断向量表的指针; (3)FR(PSW)入栈保护; (4)清除IF和TF标志 (0→ IF、0→ TF,屏蔽新的INTR中断和单步中断); (5)保护断点,将断点处的CS和IP值顺序压入堆栈; (6)取中断向量分别送至CS和IP,按新的地址执行中断服务程序。 内部中断的特点: 进入中断时,不需要执行中断响应周期去获得中断类型码。 除单步中断外,内部中断无法用软件禁止,不受IF的影响。 内部中断没有随机性,由指令在程序中的位置决定。 除单步中断外,内部中断优先级高于硬件中断。
47
响应过程(除中断类型码获得方式外)同内部中断。
第6章 输入/输出和中断 2. 外部中断响应过程 系统自动提供,不是外设提供。 (1)非屏蔽中断响应 中断类型码固定为2。 响应过程(除中断类型码获得方式外)同内部中断。 (2)可屏蔽中断响应 当INTR线有效且IF=1,则CPU在当前指令执行完毕后, 响应外部中断请求,转入中断响应周期。 中断响应周期有2个,每个响应周期由4个T组成,中间以 空闲状态(2~3个T)隔开。P246页图6-23。 在每个中断响应周期,CPU向引脚INTA发一个负脉冲信号; 请求中断的外设在收到第2个INTA时,将中断类型码→ DB (通常由8259传送)。 获得中断类型码后, CPU转入中断处理过程(同内部中断)。 INTR共执行7个总线周期。P247页①~④。 南京航空航天大学 电子信息工程学院
48
设某输入设备数据准备就绪后向CPU申请可屏蔽中断, 中断类型码为80H,中断服务程序名为INTPROC。
第6章 输入/输出和中断 3. 中断响应及处理过程举例 设某输入设备数据准备就绪后向CPU申请可屏蔽中断, 中断类型码为80H,中断服务程序名为INTPROC。 程序开始,先设置中断向量表(初始化)。程序如下: … CLI ;关中断 PUSH DS MOV AX,0000H ;中断向量指针的段地址 MOV DS,AX MOV BX,0200H ;中断向量指针的偏移量(80H*4) MOV AX,OFFSET INTPROC MOV [BX],AX ;偏移量→中断向量表 MOV AX,SEG INTPROC MOV [BX+2],AX ;段地址→中断向量表 POP DS STI ;开中断 南京航空航天大学 电子信息工程学院
49
开中断后,执行任何指令期间都有可能接收到中断申请。
第6章 输入/输出和中断 (1)INTR有效,外设申请中断 … MOV AX,2000H ADD AX,AX (2)当前指令结束后,CPU响应中断,执行中断 响应总线周期,获得中断类型码(80H) 1234:5678 MOV [SI],AX (3)当前FR内容压栈,IF=TF=0 … (4)断点CS(1234H)、IP(5678H)压栈 (5)查中断向量表,中断向量送CS、IP (6)执行中断服务程序 INTPROC PROC MOV DX,DPORT IN AL,DX IRET INTPROC ENDP (7)执行IRET指令,恢复断点,恢复FR IP=5678H,CS=1234H,回到断点执行 开中断后,执行任何指令期间都有可能接收到中断申请。 假设执行ADD指令时收到中断申请,且IF=1,则CPU响应中断。
50
第6章 输入/输出和中断 4. 各类中断的优先权
51
6.4.4 80386/80486/Pentium CPU中断系统(不做要求)
第6章 输入/输出和中断 /80486/Pentium CPU中断系统(不做要求) 1. 实模式下的中断与异常 80386及其以上微处理器工作于实模式时,与8086/8088一样。 可定义256个中断类型,中断向量表在系统物理存储器的最低1K字节区。 中断类型及各类中断处理流程也基本相同。 书248页表6-4:8086~Pentium CPU在部分PC机中的中断分配表。 2. 保护模式下的中断与异常:与实模式相比有三点不同 CPU根据中断类型码从中断描述符表IDT而不是中断向 量表获取中断服务程序入口的有关信息。 中断过程中要对被中断的程序代码进行保护。 若有出错码,还要将出错码压入堆栈。 南京航空航天大学 电子信息工程学院
52
IDT的起始位置通过中断描述符表寄存器IDTR设置,置于内存的任意区域。
第6章 输入/输出和中断 2. 保护模式下的中断与异常 (1)中断描述符表IDT IDT的起始位置通过中断描述符表寄存器IDTR设置,置于内存的任意区域。 在整个系统中,IDT只有一个。它的作用同样是通过类型码引导程序转移到中断或异常处理程序中去。 IDT包含的是门描述符而不是中断向量。门描述符可以是中断门、陷阱门或任务门。IDT最多允许有256个门描述符,标为门0~门255,对应256种中断类型。 南京航空航天大学 电子信息工程学院
53
使用陷阱门或中断门描述符进入中断服务程序入口。具体步骤见书249页①~④ 。
第6章 输入/输出和中断 (2)获得中断服务程序地址 使用陷阱门或中断门描述符进入中断服务程序入口。具体步骤见书249页①~④ 。 南京航空航天大学 电子信息工程学院
54
① 需要通过类型号判断所要索引的门描述符是否超出IDT 的界限。若超出,则引起一般保护异常错误。
第6章 输入/输出和中断 (3)中断响应及异常处理 ① 需要通过类型号判断所要索引的门描述符是否超出IDT 的界限。若超出,则引起一般保护异常错误。 ② 从IDT中取得对应的门描述符后要进行一些相关检查。 ③ 在保护模式下,除了可通过中断门或陷阱门实现由当前 任务进行中断处理以外,也允许通过任务门实现由另一 个任务完成中断处理。 中断响应时堆栈的变化情况 南京航空航天大学 电子信息工程学院
55
6.5 8259A可编程中断控制器 … 中断申请管理接口的主要功能: (1)向CPU的INTR引脚发中断申请信号
第6章 输入/输出和中断 A可编程中断控制器 8088 CPU INTR IF 中断申请 接口1 网络 接口2 硬盘 接口3 软盘 接口4 打印机 … 中断申请 管理接口 INT 中断申请管理接口的主要功能: 在PC机由8259A可编程中断控制器来完成。 (1)向CPU的INTR引脚发中断申请信号 当有多个外设同时请求中断时,能按照优先级顺序向CPU 发出中断申请,使CPU响应优先级最高的外设中断申请。 (2)送中断类型码 在CPU中断响应周期,针对不同外设的中断请求,向CPU 传送不同的中断类型码,使CPU执行相应的中断服务程序。
56
6.5.1 8259A芯片的内部结构与引脚 8259A是可编程中断控制器( PIC ),集:
第6章 输入/输出和中断 8259A是可编程中断控制器( PIC ),集: 中断源优先级排队、辨认、提供中断类型码等 为一体, 对其编程,可管理8级中断,级联时共可管理到最多64级中断。 A芯片的内部结构与引脚 8259A的功能 单片8259可以管理8级硬件中断,用9片级联,组成主从方式,可以管理64级中断。 每一级中断都可以由软件屏蔽或允许。 能判别芯片的IRi 输入端是否收到一个有效的中断请求。 若未被屏蔽,判其优先级。将优先级高的中断源申请送INTR→CPU,并提供相应的中断类型码→ CPU。 几种工作方式可通过编程进行选择。 南京航空航天大学 电子信息工程学院
57
中断服务寄存器(ISR, 8位Reg ),存放当前正在服务的中断级。
第6章 输入/输出和中断 8259A的内部结构 中断请求寄存器 (IRR ,8位锁存器) 锁存外设送来的IR7~IR0中断请求信号。 中断屏蔽寄存器 (IMR ,8位Reg ) 用来设置中断请求屏蔽信号。IMR第i位置1,则与它对应的IRi中断申请被屏蔽。 中断服务寄存器(ISR, 8位Reg ),存放当前正在服务的中断级。 由优先权判别电路根据IRR中各请求位优先级别和IMR中屏蔽标志,将允许中断的最高优先权请求位选通到ISR中(置1)。 在处理某级中断的整个过程中,ISR中与它对应的位始终保持1,只有服务完,在返回之前,才由中断结束命令EOI将其清0(CPU与8259同步)。 不进行中断服务的ISR各位恒等于0。
58
8259A的工作方式由一组初始化命令字Reg ICW1~ICW4
第6章 输入/输出和中断 8259A的内部结构 优先级分析器 用来识别和管理各中断请求信号的优先级别。 数据总线缓冲器 ——三态缓冲器 8259A与CPU的数据总线接口。 控制逻辑 根据CPU对8259A编程设定的工作方式产生内部控制信号。 8259A的工作方式由一组初始化命令字Reg ICW1~ICW4 和一组操作命令字Reg OCW1~OCW3 来决定。 读/写电路 接收CPU的读(IN, RD有效)/ 写(OUT, WR有效)命令 , CPU读入IRR、ISR或IMR的内容 / 将命令字写入ICW和OCW。 南京航空航天大学 电子信息工程学院
59
8259A的内部结构 CS:片选信号,低电平时可 对芯片读写。 级联缓冲/比较器 A0:与CS及WR或RD配合 去读写8259的内部寄存
第6章 输入/输出和中断 8259A的内部结构 SP/EN—从片编程/缓冲器允许 信号,双功能引脚。 ①缓冲器方式,输出信号, 控制缓冲器传送方向。 ②非缓冲器方式,输入信号, 规定8259A是主(SP=1)还是从(SP=0)。 在单片8259系统中,SP/EN接 高电平。 CS:片选信号,低电平时可 对芯片读写。 A0:与CS及WR或RD配合 去读写8259的内部寄存 器,可直接接CPU的某 位地址线。 级联缓冲/比较器 (用于多片8259之间的连接) 主—从结构中: 主设备8259的CAS2~CAS0是输出线;从设备8259的是输入线,两者互连。
60
8259A各引脚见书P252,DIP封装, 28个PIN。 8259A 片 选 译 码 第6章 输入/输出和中断 PC/XT中的连接 键 盘
第6章 输入/输出和中断 8259A各引脚见书P252,DIP封装, 28个PIN。 PC/XT中的连接 键 盘 保 留 串 口2 硬 盘 软 盘 打印机 IOW 18.2Hz方 波 A0 CS 8259A 总线 数 据 线 IOR RD WR 片 选 译 码 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 A5 ~ A9 D0 D7 Vcc SP/EN CA0 CA1 CA2 GND + 5V 20~3FH 用于多片 级连情况 INTA INT INTR 串 口1
61
CPU 进入中断响应的过程,继而执行中断服务程序。
第6章 输入/输出和中断 A芯片的工作过程及工作方式 A芯片的工作过程 上电后,由CPU执行一段程序对8259初始化(通过写初始化命令字 ICW实现)。完成初始化后,8259处于就绪状态。 当外设发出中断请求,8259对外部中断请求做如下处理: ① 若有若干IRi=1,则IRR中相应位置1。 ② 若IMR中的相应位为0, 则8259发INTR CPU。 ③ 若IF=1,则CPU在执行完当前指令后,发一个INTA8259。 ④置ISR中对应当前最高优先权的位为1,且IRR中相应位清0。 ⑤ CPU发第二个INTA8259,8259送8位的中断类型码N DB。 ( N在初始化8259A时已设定好) CPU做 N×4 ,从中断向量表中取得中断服务程序的入口地址。 ⑥ 若8259A设为AEOI(自动结束中断), 则在第二个INTA尾,ISR中相应的位复位。否则, 在中断服务程序末尾,由CPU发出EOI命令使ISR中相应位复位。 CPU 进入中断响应的过程,继而执行中断服务程序。
62
此时CS:IP指向中断服务程序的入口,开始执行中断程序。 保护现场与断点
第6章 输入/输出和中断 CPU对外部中断的响应过程: ① 取中断类型码N ② 当前PSW的内容入栈 ③ 清IF、TF标志 ④ 当前CS的内容入栈 ⑤ 当前IP的内容入栈 ⑥ 取内存单元( 0 : N ×4 )字内容送IP ⑦ 取内存单元( 0 : N ×4 + 2 )字内容送CS 此时CS:IP指向中断服务程序的入口,开始执行中断程序。 保护现场与断点 取中断服务 程序入口地址 执行完中断服务程序中最后一条指令IRET后,返回被中断处, 继续执行被中断的程序。 南京航空航天大学 电子信息工程学院
63
① 普通全嵌套方式(又称全嵌套方式 ,适用于单片8259的系统)
第6章 输入/输出和中断 A芯片的工作方式 (1)中断嵌套方式 ① 普通全嵌套方式(又称全嵌套方式 ,适用于单片8259的系统) 特征: 中断优先级固定 IR0 IR1 IR2 IR 3 IR4 IR5 IR6 IR7 高 低 响应某中断请求并服务该中断源时,与它同级或低级的中断 源申请被屏蔽,可响应优先级比它高的中断源的申请。 用ISR中相应位置1表示该中断源正在被服务。 ② 特殊全嵌套方式(适用于8259级联的情况) CPU 主 8259A INT 从 IR0 IR1 IR7 … 特殊全嵌套 普通全嵌套 IR2 级联时,必须采用特殊的全嵌套方式。
64
主片编程为特殊全嵌套方式: 在从片的中断处理程序快结束时,应给 EOI从 N Y EOI主
第6章 输入/输出和中断 主片编程为特殊全嵌套方式: 当处理一级中断时,如果有同级的中断请求,也会给予响应。 否则:当从片8259 的IR2有中断请求,若主片是普通全嵌套方式,则会屏蔽从片上的IR0、IR1(比IR2优先级高)中断请求。 因为从片上的8个IRi变成了主片的同一级。 采用特殊全嵌套方式,对来自同一从片的较高优先级请求不会屏蔽。 在从片的中断处理程序快结束时,应给 8259A发EOI(中断结束)命令,方法是: (a)向从片发EOI; (b)读从片的ISR内容: 若为0,表示从片只有一个中断源申请 中断,再向主片发一个EOI命令。 若不为0,表示从片存在两个以上的中 断源在申请中断,则不应发EOI 给主片。 EOI从 从ISR是 否全为0 EOI主 N Y IRET
65
一个系统的优先权比较复杂,不能总是规定IR0高 … IR7低。 8259A设计了两种改变优先权的方法。
第6章 输入/输出和中断 (2)中断优先权循环方式 一个系统的优先权比较复杂,不能总是规定IR0高 … IR7低。 8259A设计了两种改变优先权的方法。 ①自动循环方式(适用于设备的优先权相等情况) 当一个设备受到中断服务后,它的优先级自动降到最低,其相邻的中断请求则变成最高的。 例: IR0 IR1 IR2 IR 3 IR4 IR5 IR6 IR7 初始 高 低 若IR4有中断请求,则处理IR4后,IR5成为最高优先级, 优先级次序为:IR5 IR6 IR7 IR0 IR1 IR2 IR3 IR4 IR4左循环至最低优先级。 ②特殊循环方式(适用于中断源优先级需要任意改变的情况) 通过OCW2命令字设置当前的最低优先级IR5,使得有: IR6 IR7 IR0 … IR5。 南京航空航天大学 电子信息工程学院
66
当中断请求得到响应时,ISR中相应位置1,
第6章 输入/输出和中断 (3)中断结束处理方式 当中断请求得到响应时,ISR中相应位置1, 中断服务结束时,必须使这个位复位以标识中断处理结束。 ①自动中断结束 (AEOI)(只能用于不要求中断嵌套的情况) 在第二个INTA的后沿,8259A自动把ISR的对应位清除。 ②普通中断结束(EOI)(适用于普通全嵌套方式) 当8259工作在全嵌套方式,当前服务过的中断源就是中断优先 权最高的源,用普通的EOI命令使它在ISR中的相应位复位。 这个命令加在中断服务程序的末尾处。 ③特殊中断结束(SEOI)(非普通全嵌套方式下) 当8259工作在非普通全嵌套方式时,8259可能不能确定刚服 务的源的等级,就要用特殊的EOI命令,指出要清除哪个ISR位。 不论是普通、还是特殊的中断结束方式,在级联系统中,中断结束时必须发送两次EOI:先发给从片,再发给主片。 向从片发EOI后,须检查从片中所有申请中断的源是否全服务过。只有全服务过了,才能向主片发送EOI命令。
67
(4)屏蔽中断源方式(通过IMR编程可允许或禁止中断) ①普通屏蔽方式 由命令字OCW1设置IMR某位或某几位为1,可屏蔽其中断请求。
第6章 输入/输出和中断 (4)屏蔽中断源方式(通过IMR编程可允许或禁止中断) ①普通屏蔽方式 由命令字OCW1设置IMR某位或某几位为1,可屏蔽其中断请求。 该位清0,则允许该级中断。 ②特殊屏蔽方式(用于开放较低级中断请求) 在8259中,当一个中断请求被响应时,ISR对应位置1。 在该位未复位时,8259会禁止所有优先级比它低的中断。 用特殊屏蔽方式可以做到: 屏蔽当前中断级(IMR对应位为1); ISR中相应位复位,则较本级低的中断源申请可以得到响应。 (5)中断触发方式 ①电平触发方式 8259的引脚IRi上出现高电平表示有中断请求。 ②边沿触发方式 8259的引脚IRi上出现上升沿表示有中断请求。 南京航空航天大学 电子信息工程学院
68
总结: 普通全嵌套方式 优先权固定方式 特殊全嵌套方式 设置优先权方式 自动循环方式 优先权循环方式 特殊循环方式 自动中断结束方式
第6章 输入/输出和中断 普通全嵌套方式 特殊全嵌套方式 自动循环方式 特殊循环方式 优先权固定方式 优先权循环方式 设置优先权方式 总结: 普通中断结束方式 特殊中断结束方式 自动中断结束方式 非自动中断结束方式 结束中断处理方式 屏蔽中断源方式 普通屏蔽方式 特殊屏蔽方式 中断触发方式 边沿触发方式 电平触发方式 南京航空航天大学 电子信息工程学院
69
8259A是可编程中断控制器,对其编程可以分为两部分。
第6章 输入/输出和中断 A命令字 8259A是可编程中断控制器,对其编程可以分为两部分。 ① 初始化编程 由CPU向8259A送2~ 4个字节的初始化命令字ICW。 在8259A工作之前,必须写入初始化命令字。 ② 操作方式编程 由CPU向8259A送3个字节的操作命令字OCW。 OCW可在8259A已经初始化以后的任何时间内写入。 在8259A工作期间,OCW规定或设置其工作方式,动态地 控制处理中断的过程。 南京航空航天大学 电子信息工程学院
70
8259A内部有9个 8259A中断控制器 可读写的寄存器 处理部分 4个初始化命令寄存器 ICW1、ICW2 ICW3、ICW4 优先级
第6章 输入/输出和中断 1 × I3 I4 ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制 处理部分 控制部分 ISR 当前 中断 服务 寄存器 PR 优先级 裁决器 IRR 中断申请 中断屏蔽寄存器 IMR OCW2 OCW3 OCW1 8259A中断控制器 8259A内部有9个 可读写的寄存器 4个初始化命令寄存器 ICW1、ICW2 ICW3、ICW4 3个操作命令寄存器 OCW1(IMR) OCW2、OCW3 当前中断服务寄存器 ISR 中断申请寄存器 IRR
71
8259A中断控制器 8259A有两个I/O端口地址 处理部分 8 A0=0 偶地址端口 A0=1 奇地址端口 优先级 A0 裁决器
第6章 输入/输出和中断 1 × I3 I4 ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制 处理部分 控制部分 ISR 当前 中断 服务 寄存器 PR 优先级 裁决器 IRR 中断申请 中断屏蔽寄存器 OCW2 OCW3 OCW1 8259A中断控制器 D0 ~ D7 A0 CS RD WR 8 8259A有两个I/O端口地址 对9个寄存器的读写 均通过这两个端口实现 写入数据的特征位 写入的先后顺序 区分是对哪个寄存器 进行操作 根据 A0=0 偶地址端口 A0=1 奇地址端口
72
ICW1~ICW4用于接受CPU对8259的初始化命令。顺序写入。 ICW1和ICW2是必须送的, ICW3和ICW4由工作方式决定。
第6章 输入/输出和中断 A的初始化命令字ICW ICW1~ICW4用于接受CPU对8259的初始化命令。顺序写入。 ICW1和ICW2是必须送的, ICW3和ICW4由工作方式决定。 (1)ICW1(初始化字) 特征:A0=0,ICW1中D4=1 ICW1启动了8259A中的初始化顺序, 自动发生以下事件: ① 对中断请求信号边沿检测电路复位; ② 清IMR、ISR; ③ 指定IR0优先级最高; ④ 设定为普通屏蔽方式; ⑤ 设定为非自动结束中断方式。 南京航空航天大学 电子信息工程学院
73
IC4 ADI 1 A5 A6 A7 A0 D7 D6 D5 D4 D3 D2 D1 D0 偶地址 1=需要ICW4 1=单片 识别码
第6章 输入/输出和中断 IC4 SNGL ADI LTIM 1 A5 A6 A7 A0 D D D D D D D D0 偶地址 1=需要ICW4 0=不需要ICW4 1=单片 0=级联 调用地址间隔: 1=间隔为4,80X86中不用 0=间隔为8 1=电平触发 0=边沿触发 中断向量地址的A7~A5 (只用于8080/8085)取0 识别码 ICW1 例:设8259A端口地址20H、21H MOV AL,13H OUT 20H,AL 中断为边沿触发,系统中一片8259A,要设ICW4. ICW1
74
优先级 裁决器 南京航空航天大学 电子信息工程学院 ISR IRR 当前 中断 申请 服务 寄存器 PR
第6章 输入/输出和中断 IOR IOW 总线 数 据 线 D0 ~ D7 INTA A0 片 选 译 码 A5 A9 CS RD WR INT ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制 ISR 当前 中断 服务 寄存器 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 OCW1 中断屏蔽寄存器 IMR OCW2 优先级、发EOI OCW3 特殊屏蔽设置 PR 优先级 裁决器 IRR 申请 1 INTR 例:设8259A端口地址20H、21H MOV AL,13H OUT 20H,AL 中断为边沿触发,系统中一片8259A,要设ICW4. ICW1 南京航空航天大学 电子信息工程学院
75
写入时A0=1。当已知某中断源的中断类型码时,应填入ICW2,
第6章 输入/输出和中断 (2)ICW2(中断类型码字) 写入时A0=1。当已知某中断源的中断类型码时,应填入ICW2, 其中高5位有效,低3位系统自动填入。 1 T3 T4 T5 T6 T7 A0 奇地址 中断类型 自动填入 IR0 000 IR1 001 … IR7 111 (3)ICW3(级联控制字) 若系统中只有一片8259A,则不用ICW3; 若有多片8259A级连,则主8259A和每一片从8259A都必须使用ICW3。 最多允许有一片主8259A和8片从8259A级连,使中断源扩展至64个, 这时主片与从片8259A的ICW3是不同的。 仅当ICW1中D1为0才需写ICW3 .
76
对应每位Di表示IRi中断请求线上有无从片 1:有 0:无
第6章 输入/输出和中断 S0 S1 S2 S3 S4 S5 S6 S7 1 主片 A0 D D D D D D D D0 奇地址 对应每位Di表示IRi中断请求线上有无从片 1:有 0:无 从片 ID0 ID1 ID2 D D D D D D D D0 无作用,常取0 0 0 0 0 0 1 … 1 1 0 1 1 1 相应于主片 IRi(i=0 ~7)级联 的从片编码 例:ICW3=F0H,表示IR7~IR4上有从片, IR3~IR0上无从片。
77
定义8259是工作于8080/8085模式,还是工作于80x86模式,及
第6章 输入/输出和中断 (4)ICW4(方式控制字) 定义8259是工作于8080/8085模式,还是工作于80x86模式,及 中断服务程序是否需要EOI命令(用以清除ISR,允许其他中断)等。 由 ICW1决定是否要ICW4 μPM AEOI M/S BUF SFNM 1 A0 D D D D D D D D0 奇地址 1=80X86模式 0=8080/8085模式 1=自动EOI 0=普通EOI 0 X:非缓冲方式 :缓冲方式/从 :缓冲方式/主 1=特殊的全嵌套方式 0=普通的全嵌套方式 例:MOV AL,0DH OUT 21H,AL 普通全嵌套,普通EOI,缓冲方式。
78
在写入ICW1~ICW4后,8259A就绪,可接收中断请求信号, 若不再写入OCW,则处于全嵌套中断工作方式。
第6章 输入/输出和中断 IOR IOW 总线 数 据 线 D0 ~ D7 INTA A0 片 选 译 码 A5 A9 CS RD WR INT ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制 ISR 当前 中断 服务 寄存器 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 OCW1 中断屏蔽寄存器 IMR OCW2 优先级、发EOI OCW3 特殊屏蔽设置 PR 优先级 裁决器 IRR 申请 1 INTR A的操作命令字OCW 在写入ICW1~ICW4后,8259A就绪,可接收中断请求信号, 若不再写入OCW,则处于全嵌套中断工作方式。
79
② 当CPU为某中断源服务时,ISR相应位置1。 这时8259不再响应同级或低级的中断请求,直到高级中断
第6章 输入/输出和中断 全嵌套中断工作方式的特点: ① 优先级固定 IR0 ……. IR7 高 低 ② 当CPU为某中断源服务时,ISR相应位置1。 这时8259不再响应同级或低级的中断请求,直到高级中断 服务完毕,再执行一条EOI命令为止。 ③ 当高级中断请求到来,且IF=1,CPU转高级中断服务。 这时低级中断服务的ISR位不复位,而高级中断的ISR位又置1。 当高级中断服务完毕,发EOI命令以及IRET,高级中断源对应 的ISR位复位,程序返回到低级中断程序的断点处,继续执行 低级中断服务程序。 若需改变上述8259A的中断控制方式,或为了屏蔽某些中断, 以及读出8259A的一些状态信息(如IRR、ISR、IMR的内容), 则必须写入操作命令字OCW。 南京航空航天大学 电子信息工程学院
80
操作命令字OCW1~OCW3,写入顺序上无特别要求。 端口地址有严格规定:OCW1写入奇地址端口(A0=1)
第6章 输入/输出和中断 操作命令字OCW1~OCW3,写入顺序上无特别要求。 端口地址有严格规定:OCW1写入奇地址端口(A0=1) OCW2和OCW3写入偶地址端口(A0=0) (1)OCW1(屏蔽控制字IMR) IMR相应位置1,屏蔽;IMR相应位置0,开放。 OCW1可置于程序的任何地方,实现对某些中断的屏蔽或 开放,也就实现了对优先权的改变。 M0 M1 M2 M3 M4 M5 M6 M7 1 A0 D D D D D D D D0 奇地址 中断屏蔽 1=置屏蔽 0=复位屏蔽 南京航空航天大学 电子信息工程学院
81
(2)OCW2(中断结束和优先权循环控制字) 设置优先级是否循环,循环方式,中断结束方式。
第6章 输入/输出和中断 (2)OCW2(中断结束和优先权循环控制字) 设置优先级是否循环,循环方式,中断结束方式。 中断结束命令位: 1 ISR中相应位复位 0 在ICW4中给出AEOI 中断优先权方式: 1 按左循环 0 非循环 IR0(高)… IR7(低 ) L0 L1 L2 EOI SL R A0 D D D D D D D D0 偶地址 8259A的几种 不同工作方式 OCW2 标志位 0 0 0 0 0 1 … 1 1 0 1 1 1 ①系统中最 低优先级的 编码 ②SL=1时, 要清除ISR中 的哪一位。 决定L2L1L0是否有效: 1 有效,指出最低优先级。 0 无效,当前被服务的中断 源左循环到最低优先级 。
82
L0 L1 L2 SL R A0 南京航空航天大学 电子信息工程学院 EOI D7 D6 D5 D4 D3 D2 D1 D0
第6章 输入/输出和中断 L0 L1 L2 EOI SL R A0 D D D D D D D D0 R:中断优先权是否循环 0:优先级固定,IR0最高,IR7最低。 1:优先级左循环,当前被服务的中断源 轮为最低优先级。 SL:特殊循环 0:当前被服务的中断源左循环到最低优先级, D2~D0 无意义。 1:D2~D0有效,指出最低优先级的中断源。 EOI:中断结束命令 0:在ICW4已给出AEOI。 1:使ISR中的相应位复位。 当ICW4中的AEOI=0时,必须给出一个EOI。 D2~D0: ① 给定该系统中最低优先级的编码。 ② 在OCW2给出特殊的中断结束命令时,指明具体要清除当 前ISR中的哪一位。 南京航空航天大学 电子信息工程学院
83
R,SL,EOI三位组合可形成8259的几种不同工作方式。
第6章 输入/输出和中断 R,SL,EOI三位组合可形成8259的几种不同工作方式。 南京航空航天大学 电子信息工程学院
84
(3)OCW3(屏蔽和读状态控制字) RIS RR P 1 A0 D7 D6 D5 D4 D3 D2 D1 D0 偶地址 ①设置特殊屏蔽方式
第6章 输入/输出和中断 (3)OCW3(屏蔽和读状态控制字) 决定下一个操作是否是读操作 RIS RR P 1 SMM ESMM A0 D D D D D D D D0 偶地址 未定义 常取0 OCW3 标志 是否工作 于特殊屏蔽 1 中断查询命令 0 非查询命令 在下一个RD脉冲 1 0 读IRR(从A0=0 1 1 读ISR 端口) 1 0 复位 1 1 置 特殊屏蔽 ①设置特殊屏蔽方式 D6 D5 复位为普通屏蔽方式 置为特殊屏蔽方式 ②查询中断请求 查询外部事件是否有中断请求。 i)写OCW38259A,其中D2=1 ii)对同一地址读查询字
85
③读取8259A的状态(IMR/IRR/ISR)
第6章 输入/输出和中断 ②查询中断请求 查询外部事件是否有中断请求。 i)写OCW38259A,其中D2=1 ii)对同一地址读查询字 D0 D1 D2 I 当前请求中断的最高优先级的中断源编码。 1:有中断请求 0:无中断请求 查询字 ③读取8259A的状态(IMR/IRR/ISR) 若D1 D0如下组合,则在下一个读命令中,读出Reg IRR/ISR的值 D1 D0= 读IRR(从A0=0读,了解未被响应的中断源的情况) 1 1 读ISR(从A0=0读,了解正在服务的中断源的情况) 对任何奇地址(A0=1)的读出都是IMR(无需设置OCW3,随时可读)
86
对8259A的命令/状态字读写条件见 P260 表6-7. 南京航空航天大学 电子信息工程学院 表注:
第6章 输入/输出和中断 对8259A的命令/状态字读写条件见 P260 表6-7. 表注: ①由控制字中的D4D3标志位决定写入的是OCW2还是OCW3。 ②写入ICW1后,由片内的顺序逻辑确定后续ICW;否则写入OCW1。 ③由OCW3的内容决定读出哪个状态字。 南京航空航天大学 电子信息工程学院
87
6.5.4 8259A芯片应用举例 8088 CPU 1. 8259A在PC/XT机中的应用 第6章 输入/输出和中断 内 存 I/O 接口
第6章 输入/输出和中断 A芯片应用举例 A在PC/XT机中的应用 +5V CLK RESET READY MN/MX VCC RD QS0 QS1 LOCK TEST HIGH NMI GND 地址锁存器 8282(两片) STB 数据收发器 OE T MRDC MWTC 总线 IORC 控制器 IOWC INTA 8259A 及有关电路 DT/R DEN ALE 地址总线 数据总线 控制总线 PC 总 线 A15~A8 S6~S3/A19~A16 AD7~AD0 8088 CPU S0 S1 S2 INTR RQ/GT0 RQ/GT1 内 存 I/O 接口
88
8259A的片选地址范围为 20 ~ 3FH 偶、奇端口地址通常取用20H、21H 8259A 片 选 译 码 第6章 输入/输出和中断
第6章 输入/输出和中断 8259A的片选地址范围为 20 ~ 3FH 偶、奇端口地址通常取用20H、21H 方 波 键 盘 保 留 串 口2 硬 盘 软 盘 打印机 IOW 18.2Hz A0 CS 8259A 总线 数 据 线 IOR RD WR 片 选 译 码 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 A5 ~ A9 D0 D7 Vcc SP/EN CA0 CA1 CA2 GND + 5V 20~3FH 用于多片 级连情况 INTA INT INTR 串 口1
89
8259A的8个中断申请与外设的连接 IR0 接一个频率为18.2Hz的方波; 若CPU对该申请给予响应, 18.2Hz时钟信号
第6章 输入/输出和中断 8259A的8个中断申请与外设的连接 IR0 接一个频率为18.2Hz的方波; 若CPU对该申请给予响应, 则每秒中断18.2次。 每秒执行18.2次该申请对应的中断服务程序。 IR1接键盘接口发出的中断申请; 每按下一键,若CPU对该申请给予响应, 则执行一次该申请对应的中断服务程序。 IR2~IR7通过系统总线引出, 对应引脚信号为IRQ2~IRQ7。 18.2Hz时钟信号 南京航空航天大学 电子信息工程学院
90
IBM PC/XT微机可屏蔽中断响应过程示意图
第6章 输入/输出和中断 8088 INTR 主 板 IF 键 盘 18.2Hz 方波 8259A INT 中断屏蔽寄存器 键盘 中断申请 IR1 IR2 ~ IR7 IR0 当前 中断 服务 寄存器 接口 IRQ2 IRQ7 PC 总 线 外设接口 外 设 08h 09h 0Ah 0Fh IBM PC/XT微机可屏蔽中断响应过程示意图 南京航空航天大学 电子信息工程学院
91
IR0~IR7中断申请信号为上升沿触发方式;
第6章 输入/输出和中断 IBM PC/XT总线插槽引脚信号 GND RESET +5V IRQ2 -5V DRQ2 -12V +12V MEMW MEMR IOW IOR DACK3 DRQ3 DACK1 DRQ1 DACK0 CLOCK IRQ7 IRQ6 IRQ5 IRQ4 IRQ3 DACK2 T/C ALE OSC I/O CH CK D7 D6 D5 D4 D3 D2 D1 D0 I/O CH RDY AEN A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 BIOS初始化程序对8259A的设置 IR0~IR7中断申请信号为上升沿触发方式; IR0~IR7对应的中断类型号分别为08H~0FH; 优先级IR0最高,IR7最低; 采用非自动结束方式, 需向OCW2发EOI中断结束 命令, 清除ISR中的记录。 南京航空航天大学 电子信息工程学院
92
AND AL, 0FCH ;只允许IR0、IR1中断,其余不变 OUT 21H, AL ;写入OCW1
第6章 输入/输出和中断 例:P261 (1)8259A初始化编程 MOV AL, B OUT 20H,AL ;ICW1 MOV AL, B OUT 21H,AL ;ICW2 MOV AL, B OUT 21H,AL ;ICW4 (2)8259A操作方式编程 IN AL, 21H ;读出IMR AND AL, 0FCH ;只允许IR0、IR1中断,其余不变 OUT 21H, AL ;写入OCW1 (3)给8259发EOI命令 MOV AL, 20H OUT H, AL ;写入OCW2 … ;恢复现场 IRET (4)设置OCW3,读出IRR、ISR MOV AL, 0AH ;写入OCW3, OUT 20H, AL ;为读IRR命令 NOP IN AL, 20H ;读出IRR
93
2. 8259A在PC/AT机中的应用 (2) 主片端口地址:20H、21H (1)从8259A的中断 中断类型码: 08H~0FH
第6章 输入/输出和中断 A在PC/AT机中的应用 (2) 主片端口地址:20H、21H 中断类型码: 08H~0FH 从片端口地址: A0H, A1H 中断类型码: H~77H (1)从8259A的中断 申请与主8259A 的IRQ2相连 南京航空航天大学 电子信息工程学院
94
中断路由器动态分配PCI上的中断申请到8259A中未被占用的中断上。
第6章 输入/输出和中断 Pentium机中8259A的连线 从8259A IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15 主 8259A IRQ0 IRQ1 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 INT 至CPU 中 断 路 由 器 IRQ6 IRQ5 IRQ4 IRQ3 IRQ2 ISA总线 PCI 总 线 系统时钟 键盘 芯片组 中断路由器动态分配PCI上的中断申请到8259A中未被占用的中断上。
95
第6章 输入/输出和中断 (1)8259A初始化编程 对主片8259A的初始化: (2)级联工作编程 MOV AL,0BH
第6章 输入/输出和中断 (1)8259A初始化编程 对主片8259A的初始化: MOV AL,11H ;ICW1 OUT 20H,AL JMP INTR1 INTR1: MOV AL,08H ;ICW2 OUT 21H,AL JMP INTR2 INTR2: MOV AL,04H ;ICW3 JMP INTR3 JNTR3: MOV AL,11H ;ICW4 主片特殊全嵌套 OUT H,AL 对从片8259A的初始化: MOV AL,11H OUT 0A0H,AL JMP INTR5 INTR5: MOV AL,70H OUT 0A1H,AL JMP INTR6 INTR6: MOV AL,02H OUT 0A1H,AL JMP INTR7 INTR7: MOV AL,01H ;从片普通全嵌套 (2)级联工作编程 读ISR的内容: MOV AL,0BH OUT 0A0H,AL NOP IN AL,0A0H 从片发EOI命令: MOV AL,20H ;端口A0H 主片发EOI命令: OUT 20H,AL ;端口20H
96
6.6 中断程序设计 6.6.1 设计方法 中断服务程序: 保护现场 … 一般过程 1. 设置中断向量表 2. 设置中断控制器(外部中断)
第6章 输入/输出和中断 6.6 中断程序设计 中断服务程序: 保护现场 STI CLI EOI命令 恢复现场 IRET … 设计方法 一般过程 设置中断向量表 2. 设置中断控制器(外部中断) 3. 置中断允许标志IF(外部中断) 4. 设计中断服务程序 1. 设置中断向量表 利用传送指令(MOV等)直接访问中断向量表的相应存储单元; 利用DOS系统功能调用INT 21H的25H/35H子功能修改中断向量: ① 先保存原有中断向量(如果是系统已经使用的中断类型码) ② 设置新的中断向量 ③ 恢复原有中断向量 南京航空航天大学 电子信息工程学院
97
将由AL指定中断类型码的中断向量从中断向量表中取到ES:BX中。
第6章 输入/输出和中断 INT 21H的25H/35H子功能 设置中断向量: 将由AL指定中断类型码的中断向量DS:DX置在中断向量表中。 预置 AH=25H, AL=中断类型码, DS:DX=中断向量 执行 INT 21H 读取中断向量: 将由AL指定中断类型码的中断向量从中断向量表中取到ES:BX中。 预置 AH=35H, AL=中断类型码 执行 INT 21H 返回时: ES:BX=中断向量 例:书264 ;保存原中断向量的内容 ∶ INTSEG DW ? INTOFF DW ? MOV AH,35H MOV AL,0BH INT H MOV INTSEG,ES ;保存原中断向量的段基址 MOV INTOFF,BX ;保存原中断向量的偏移量
98
① 若用PC机内8259,主要是对机内已初始化的8259的IMR 进行设置,允许相应位开放中断。
第6章 输入/输出和中断 ;重新修改中断向量的内容 CLI ;关中断, 设置中断向量新内容 (与PPT48页相比较) PUSH DS MOV AX,SEG INTPROC MOV DS,AX MOV DX,OFFSET INTPROC MOV AH,25H MOV AL,0BH INT H POP DS 2. 设置中断控制器 ① 若用PC机内8259,主要是对机内已初始化的8259的IMR 进行设置,允许相应位开放中断。 ② 否则应对中断控制器8259进行初始化(写入ICW)。 南京航空航天大学 电子信息工程学院
99
例:书P265。对IMR进行相应处理 :先保存,再回复。 ∶ INTIMR DB ?
第6章 输入/输出和中断 例:书P265。对IMR进行相应处理 :先保存,再回复。 ∶ INTIMR DB ? IN AL,21H ;读出IMR MOV INTIMR,AL ;保存原IMR内容到INTIMR AND AL,0F7H ;允许IRQ3中断,其它不变 OUT 21H,AL ;设置新IMR内容 ;恢复原先的IMR MOV AL,INTIMR ;取出保留的IMR原内容 OUT 21H,AL ;重写OCW1(IMR) 3. 设置CPU的中断允许标志IF ① 初始化时先CLI ; ② 中断初始化工作完成后,开中断STI。 南京航空航天大学 电子信息工程学院
100
6.6.2 中断程序设计举例 4. 设计中断服务程序 注意事项若干 软中断程序设计举例 例 :P265 定义一个软中断,中断类型码为80H,
第6章 输入/输出和中断 4. 设计中断服务程序 定义为过程 保护现场 开中断 中断服务 8259结束中断(对外部中断) 恢复现场 中断返回 注意事项若干 中断程序设计举例 软中断程序设计举例 例 :P265 定义一个软中断,中断类型码为80H, 在中断服务程序中完成:ASCII码加偶校验位(第7位), ASCII码表首地址为ASCBUF,字节数为COUNT, 加偶校验位后仍放回原处。 南京航空航天大学 电子信息工程学院
101
中断服务程序的编程原则 南京航空航天大学 电子信息工程学院 第6章 输入/输出和中断
第6章 输入/输出和中断 中断服务程序的编程原则 中断是异步发生的,进入系统时并不考虑CPU当前运行状态。因此中断服务程序必须保护现场。 应用程序开始,要先关中断,做与中断相关的一些初始化编程,如设置中断向量表等。 在中断服务程序入口处要立即开中断,以允许较高优先级的中断产生。 中断服务程序的服务时间要尽量压缩,以免干扰同级或低级中断设备的工作。即,能在主程序做的尽量不放在中断服务程序中。 由于PC机中8259采用普通中断结束,因此在中断服务程序执行IRET返回前,应向8259发结束中断命令EOI: MOV AL, 20H ;使当前ISR中的对应位复位 OUT 20H, AL 若使用系统已用的中断类型码,编制替代系统原有的中断服务程序时,应保存好原中断向量的内容。在应用程序终止前恢复原有的中断向量。 中断服务程序中不要使用INT 21H,防止DOS被重入(若主程序执行INT 21H时产生了外部中断,中断服务程序又调用它,就出现了DOS重入 )。中断服务程序若要控制I/O设备,最好调用ROM BIOS功能或者对I/O接口直接编程。 南京航空航天大学 电子信息工程学院
102
主程序设计 第6章 输入/输出和中断 START:MOV AX,DATA MOV DS,AX CLI ;关中断,设置中断向量
第6章 输入/输出和中断 主程序设计 START:MOV AX,DATA MOV DS,AX CLI ;关中断,设置中断向量 SUB AX,AX MOV ES,AX ;中断向量表的段地址为0000H MOV DI,4×80H ;在中断向量表中的偏移量 MOV AX,OFFSET INTSV ;INTSV是中断服务程序名 CLD STOSW ;写中断向量的偏移量 MOV AX,SEG INTSV STOSW ;写中断向量的段地址 STI ;中断向量设置完毕,开中断 ∶ INT 80H ;软中断指令 MOV AH,4CH ;返回DOS INT 21H
103
南京航空航天大学 电子信息工程学院 中断服务程序设计 第6章 输入/输出和中断 INTSV PROC ;中断服务程序
第6章 输入/输出和中断 中断服务程序设计 INTSV PROC ;中断服务程序 PUSH AX ;保护现场 PUSH BX PUSH CX MOV CX,COUNT ;循环程序初始化 MOV BX,OFFSET ASCBUF L2: MOV AL,[BX] ;加偶校验位算法 AND AL,AL ;建立标志PF JP L1 ;检查是否偶数个1,是,转L1 OR AL,80H ;否,D7置1 MOV [BX],AL ;加入偶校验后写回 L1: INC BX LOOP L2 POP CX ;恢复现场 POP BX POP AX IRET 南京航空航天大学 电子信息工程学院
104
硬中断程序设计举例(例 :P267) 南京航空航天大学 电子信息工程学院 8259的IRQ0中断请求来自定时器,它每隔55ms产生一次中断,
第6章 输入/输出和中断 硬中断程序设计举例(例 :P267) 8259的IRQ0中断请求来自定时器,它每隔55ms产生一次中断, 并提供了完成日时钟计时功能的中断服务程序。 本程序将替换系统计时程序,使得每次中断显示一串信息。 即,每隔55ms显示一串信息,显示10次后中止,程序返回DOS。 START: MOV AX,DATA MOV DS,AX MOV AX,3508H ;保存原中断向量内容 INT 21H MOV INTSEG,ES MOV INTOFF,BX CLI ;关中断 PUSH DS ;设置中断向量表新内容 MOV AX,SEG INTPROC MOV DX,OFFSET INTPROC MOV AX,2508H POP DS 南京航空航天大学 电子信息工程学院
105
南京航空航天大学 电子信息工程学院 第6章 输入/输出和中断 IN AL,21H ;读出IMR
第6章 输入/输出和中断 IN AL,21H ;读出IMR MOV INTIMR,AL ;保存原IMR内容 AND AL,0FEH ;允许IRQ0,其它不变 OUT 21H,AL ;设置新IMR内容 MOV COUNTER, ;设置中断次数初值为0 STI ;开中断 L1: CMP COUNTER, ;循环等待中断 JB L ;中断10次退出 CLI ;关中断 MOV AL,INTIMR ;恢复IMR OUT 21H,AL MOV DX,INTOFF ;恢复中断向量内容 MOV AX,INTSEG MOV DS,AX MOV AX,2508H INT 21H STI ;开中断 MOV AX,4C00H ;返回DOS INT 21H ;主程序结束 可选 南京航空航天大学 电子信息工程学院
106
框图: 初始化 关中断 返回DOS 暂停 开放IMR 开中断 返回DOS N Y N Y 第6章 输入/输出和中断 中断服务 恢复原中断向量
第6章 输入/输出和中断 框图: Y 初始化 返回DOS 开中断 恢复原中断向量 关中断 保存原中断向量 设置新中断向量 开放IMR 中断次数到 N 中断服务 在调试中断时,可用HLT来模拟主程序 暂停 Y 返回DOS 恢复原中断向量 中断次数到 N 中断服务
107
南京航空航天大学 电子信息工程学院 INTPROC PROC ;中断服务程序 … ;保护现场 STI ;开中断
第6章 输入/输出和中断 INTPROC PROC ;中断服务程序 … ;保护现场 STI ;开中断 MOV AX,DATA ;在由外部随机信号引起的中断中,中断时 MOV DS,AX ;DS是不确定的,所以程序中必须设置DS INC COUNTER ;中断次数加1 MOV BX,OFFSET MSG ;显示信息 MOV CX,20 ;处理一个由20个字符组成的字符串 CALL DISPLAY ;调用显示字符串程序 CLI ;关中断 MOV AL,20H ;发送EOI命令 OUT 20H,AL POP DS ;恢复现场 … IRET ;中断返回 INTPROC ENDP 南京航空航天大学 电子信息工程学院
108
南京航空航天大学 电子信息工程学院 DISPLAY PROC ;显示字符串程序 PUSH AX
第6章 输入/输出和中断 DISPLAY PROC ;显示字符串程序 PUSH AX DISPL: MOV AL,[BX] ;入口参数:BX=字符串首址 CALL DISPCHAR ;CX=显示字符串个数 INC BX LOOP DISPL POP AX RET DISPLAY ENDP DISPCHAR PROC ;显示AL中的字符 PUSH BX MOV BX,0 MOV AH,0EH INT H ;调用ROM BIOS功能显示AL中的字符 POP BX DISPCHAR ENDP 南京航空航天大学 电子信息工程学院
109
第6章 输入/输出和中断 例:6-7 P269,自学! 南京航空航天大学 电子信息工程学院
Similar presentations