河北科大微机原理第6章输入输出及中断.ppt

上传人:za****8 文档编号:16592889 上传时间:2020-10-17 格式:PPT 页数:88 大小:1.57MB
返回 下载 相关 举报
河北科大微机原理第6章输入输出及中断.ppt_第1页
第1页 / 共88页
河北科大微机原理第6章输入输出及中断.ppt_第2页
第2页 / 共88页
河北科大微机原理第6章输入输出及中断.ppt_第3页
第3页 / 共88页
点击查看更多>>
资源描述
1 第 6章 输入 /输出和中断 6.1 外设接口的一般结构 6.2 CPU 6.3 中 断 2 I/O接口: 将外设连接到总线上的一组逻辑电路的总称。 用以实现外设与主机之间的 信息交换 I/O端口: 接口中的寄存器,可以由 CPU读或写 6.1 外设接口的一般结构 数据端口 状态端口 控制端口 端 口 3 一个简单的外设接口框图 以数据形式通过数据总线传送,并在 I/O接口中分别存放在不同的端口中。 4 CPU同外设间交换的信息由三类: 1. 数据信息 三种类型 数字量 模拟量 开关量 二进制信息 数 ASCII码表示的数或字符 2.状态信息 : 表示外设当前所处的工作状态 。 3.控制信息 : 由 CPU发出的 , 用于控制 I/O接口的工作 方式以及外设的启动和停止等 。 5 I/O端口的访问 1、输入指令 格式: IN 累加器,端口 功能:把端口中数据读到 AL、或 AX中。 例: IN AL, 21H MOV DX, 201H IN AX, DX 2、输出指令 格式: OUT 端口,累加器 功能:把寄存器 AL、或 AX中数据输出到端口。 例: OUT 32H, AL MOV DX, 201H IN DX, AX 6 6.2 CPU 6.2.1 程序控制传递方式 无条件传送 查询式传送 中断方式传送 特点 :( 1) 以 CPU为中心,控制来自 CPU, 通过预 先编写好的 I/O程序实现数据的传送。 ( 2)速度较低,传送路径经过 CPU内部寄存器 同时数据 I/O响应也比较慢。 7 1.无条件传送方式 ( 同步传送方式 ) 特点: 适用于总是处于准备好状态的外设 。 外设的工 作时间已知 , 必须在 CPU限定的指令时间内准 备就绪 , 并完成数据的接收或发送 。 方法: 把 I/O指令插入到程序中 , 当程序执行到该指 令时 , 外设已作好准备 , 于是在此指令时间内 完成数据传送任务 。 优点: 软件及接口硬件简单 缺点: CPU效率低,只适用于简单外设,适应范围较 窄 8 2. 查询传送方式 ( 异步传送方式 ) 当 CPU同外设不同步且不知道外设工作速率时 , 可采用此方式传送 。 传送前 , CPU必须先对外设进行 状态检测 。 适用场合: 外设并不总是准备好 对传送速率和效率要求不高 对外设及接口的要求: 外设应提供设备状态信息 接口应具备状态端口 9 (1) 通过执行一条输入指令,读取所选外设的当前状态 (2) 根据该设备的状态决定程序去向 外设 “忙”或“未准备就绪” 重复检测外设 状态 外设 “空”或“准备就绪” 发出 I/O指令,进 行一次数据传送。 10 超时 ? READY? 与外设进 行数据交换 超时错 读入并测试外设状态 Y N Y N 传送完? 防止死循环 复位计时器 N Y 输入数据 BUSY? N Y 输出数据 11 优点:软件比较简单 缺点: CPU效率低,数据传送的实时性差,速 度较慢 12 3 无条件传递和查询传送的缺点是: CPU和外设只 能串行工作 。 为提高系统的工作效率 , 充分发挥 CPU的高速运 算能力 , 引入了 “ 中断 ” 系统 , 利用中断来实现 CPU 与外设之间的数据传送 , 这就是中断传送方式 。 特点:外设在需要时向 CPU提出请求, CPU再去为 它服务。服务结束后或在外设不需要时, CPU 可执行自己的程序。 中断使 CPU和外设以及外设之间能并行工作。 13 工作过程: 在中断传送方式中 , 通常在程序中安排好某一时 刻启动某一台外设 , 然后 CPU继续执行其主程序 , 当 外设完成数据传送的准备后 , 向 CPU发出中断请求信 号 , 在 CPU可以响应中断的条件下 , 现行主程序被 “ 中断 ” , 转去执行 “ 中断服务程序 ” , 在 “ 中断服 务程序 ” 中完成一次 CPU与外设之间的数据传送 , 传 送完成后仍返回被中断的主程序 , 从断点处继续执行 。 优点: CPU效率高,实时性好,速度快 缺点:程序编制较为复杂 14 以上三种 I/O方式的共性 均需 CPU作为中介: 软件: 外设与内存之间的数据传送是通过 CPU执行 程序来完成的( PIO方式) 硬件: I/O接口和存储器的读写控制信号、地址信号 都是由 CPU发出的 缺点:程序的执行速度限定了传送的最大速度(约 为几十 KB/s) 15 6.2.2 DMA( 直接存储器存取)传递方式 外设和内存之间直接传送数据的方式,即 DMA传 送方式。 在 DMA传送方式中,对这一数据传送过程进 行控制的硬件称为 DMA控制器( DMAC 特点: 外设直接与存储器进行数据交换 ,不需要 CPU干预 也不需软件介入。 总线由 DMA控制器( DMAC)进行控制( CPU要放 弃总线控制权),内存 /外设的地址和读写控制信号均 由 DMAC提供。 16 1. DMA ( 1) 周期挪用( Cycle Stealing) ( 2) 周期扩散 ( 3) CPU停机方式 最常用,最简单的传送方式 17 2. DMA (1)单字节传送方式 每个 DMA周期只传送一个字节就立即释放总线。 (2)成组传送方式 DMAC在申请到总线后,将一组数据传送完后才 释放总线,而不管中间 DREQ是否有效。 (3)请求传送方式 (查询传送方式) 成组传送,但每传送一个字节后, DMAC查 DREQ, 有效传,无效挂起。 18 .DMAC( DMA控制器)的基本功能 ( 1)能接收外设的请求,向 CPU发出 DMA请求信号。 ( 2)当接到 CPU发出 DMA响应信号后, DMAC接管 对总线的控制,进入 DMA ( 3)能寻址存储器,即能输出地址信息和修改地址。 ( 4)能向存储器和外设发相应的读 /写控制信号。 ( 5)能控制传送的字节数,判断 DMA ( 6)在 DMA传送结束后,能结束 DMA请求信号, 释放总线,使 CPU恢复正常工作。 19 6.3 中 6.3.1 概述 中断 外设随机地 ( 指主程序运行到任何一条指令 时 ) 或程序预先安排产生中断请求信号 , 暂 停 CPU正在运行的程序 , 转入执行称为中断服 务的子程序 , 中断服务完毕后 , 返回到主程 序被中断处继续执行的过程 。 中断源 引起中断的事件 20 ( 1) 输入 、 输出设备 : 如键盘 、 显示器和打印机等 ; ( 2) 数据通道 : 如磁带等 ; ( 3) 实时控制过程中的各种参数 ; ( 4) 故障源 : 如掉电保护等 ; ( 5) 控制系统的现场测试信号以及软件中断 。 中断系统应具有以下功能 : 1. 能实现中断响应 、 中断服务和中断返回 2. 能实现中断优先级排队 3. 21 6.3.2 中断过程与中断管理 1.中断过程 一个完整的中断基本过程包括: 中断请求 、 中断 判优 、 中断响应 、 中断处理及中断返回 等五个基本过 程 。 ( 1) 中断请求 当某一外部中断源要求 CPU中断时 , 首先要向 CPU发出中断请求 , 该请求信号被存放在中断源接口 电路的中断请求触发器中暂存 , 并通过 INTR或 NMI 信号线引入 CPU 。 22 ( 2) 中断判优 由于中断请求是随机的 , 在某一瞬间有可能出现 两个或两个以上中断源同时提出请求的情况 。 这时必 须根据中断源的轻重缓急 , 给每个中断源确定一个中 断级别 中断优先权 。 对同时产生的中断: 首先处理优先级别较高的中断; 若优先级别相同,则按先来先服务的原则 对非同时产生的中断: 低优先级的中断程序允许被 高优先级的中断源所中断 中断嵌套 23 ( 3) 中断响应 CPU每执行完一条指令后 , 查询是否有中断请求 。 当查询到有中断请求且此时 CPU允许中断 ( 即 IF=1, 开中断 ) , CPU响应中断 。 响应中断后系统做的工作: 自动关中断; 通过使 IF清零来实现 保存 FR和断点; 将被中断程序的断点 , 即当前 IP和 CS内容压入堆栈实现; 形成中断入口地址 。 通过中断矢量 , 查询中断地址 表实现 。 24 ( 4)中断处理 执行中断服务程序 中断服务开始要用压栈指令( PUSH) 将要用到的 寄存器内容压入堆栈,以便返回到主程序时能 正确运行。 保护现场 中断服务程序结束后,用 POP指令把所保存的有 关寄存器的内容从堆栈弹出,以便恢复到中断 前的状态。 恢复现场 25 ( 5)中断返回 通常在 中断返回前 ,要用指令 开中断 ,以便再 次响应中断,然后执行中断返回指令 IRET。 IRET 指令具有弹出断点地址送 IP和 CS及恢复标志寄存 器 FR内容的功能。 26 中断服务子程序完成的工作 保护现场 开中断( STI) 中断处理 关中断( CLI) 恢复现场 中断返回 27 2. 中断优先权 ( 1) 软件查询方式 28 ( 2 简单硬件方式 菊花链法或链式优先权排队电路。 专用硬件方式 可编程的中断控制器 29 6.4 8086/8088的中断系统 6.4.1 1.中断分类 硬件中断 (外部中断) 软件中断 (内部中断) 除法错中断 溢出中断 断点中断 单步中断 软件中断 非屏蔽中断 可屏蔽中断 256种中断源 类型码 0255 30 硬件中断 由外部硬件产生的,也称 外部中断 。 软件中断 CPU根据软件的某些指令或者软件对标 志寄存器某个标志位的设置而产生的, 由于它与外部中断电路完全无关,故称 为 内部中断 。 非屏蔽中断:通过 CPU的 NMI引入,它不受内部中断允 许标志位 IF的屏蔽,一般在一个系统中只 允许有一个非屏蔽中断。 可屏蔽中断:通过 CPU的 INTR引入 ,它受 IF的控制。 只有在 IF=1时, CPU才能响应中断源的请 求。当 IF=0时,中断请求被屏蔽。 31 NMI INTR 中断逻辑 软件中断指令 溢出中断 除法错 单步中断 非屏蔽中断请求 中断控 制器 8259A PIC 8086/8088CPU内部逻辑 断点中断 可 屏 蔽 中 断 请 求 n 4 3 0 1 2 8086/8088中断源类型: 32 2 存放中断地址的一段内存空间称中断向量表 。 存放各类中断的中断服务程序的入口地址 表的地址位于内存的 0000 00000000 03FFH ( 即 0段的 0000 03FFH) 大小为 1KB,共 256个 入口 每个入口占用 4个单元,依次为 IP: CS, 低字为 段内偏移,高字为段基址 33 中断向量表 00000H 003FFH 1KB 34 IP CS 中断类型码与中断向量所在位置(中断向量地址指针) 之间的对应关系为: 中断向量地址指针 =4* 35 例:中断类型码为 20H(32)的中断源所对应的中断服 务程序首址存放在 0000 0080H( 4*20H=80H) 开始 的 4 个单元中。若在 0080H至 0083H这 4个单元中存放 的值分别为 10H、 20H、 30H、 40H, 则该系统中 20H 号中断所对应的 中断处理(服务)程序入口地址为 4030 2010H 中断向量表 0080H 10H 20H 30H 40H 0083H 0082H 0081H 36 6.4.2 内部中断 软中断 在 8086/8088系统中 , 通过执行中断指令或由 CPU 本身启动的中断称为内部中断 ( 也称软件中断 ) 。 除单步中断外 , 内部中断无法用软件禁止 , 即不 受 IF的影响 。 1、 内部中断的类型 ( 1) 0型中断 除法出错中断 ( 2) 1型中断 单步中断 ( 3) 3型中断 断点中断 ( 4) 4型中断 溢出中断 ( 5) INT n指令中断 37 2内部中断的处理过程 如何获取相应的中断类型码 专用中断:中断类型码是自动形成的 。 几种类型码为:类型 0、 1、 3、 4。 对于 INT n指令 , 其类型码为指令中给定的 n。 38 取得了类型码后的处理过程: 类型码 *4 向量表指针 。 标志寄存器 FR入栈 , 保护各个标志 。 清除 IF和 TF标志 , 屏蔽新的 INTR中断和单步中断 。 保存断点 ( 断点处 IP和 CS压栈 , 先压 CS后压 IP) 。 从中断向量表中取出中断服务程序入口地址分别送 入 IP和 CS中 。 按新的地址执行中断服务程序 。 39 6.4.3 外部中断 硬中断 非屏蔽中断 NMI引脚产生的中断 , 不受 IF控制 , 类型号为 2。 可屏蔽中断 由 CPU的 INTR端接收可屏蔽中断 。 受 IF控制 , 只有当 IF=1, 在一条指令执行 结束后 , CPU才能响应可屏蔽中断的 请求 。 40 1. 外部中断的响应 CPU采样到非屏蔽中断请求时,自动提供中断类 型号 2,然后根据中断类型号,查找中断向量表指针, 其后的处理与内部中断一样。 当 INTR信号有效,如 IF=1, 则 CPU执行完一条 指令后,进入可屏蔽中断响应周期。在中断响应周期 中 CPU从数据线中获取外部设备的中断类型码。 41 2. 在外部中断响应周期中 , CPU获取了外部中断类型 码之后的中断处理过程 , 与前述的软中断过程顺序是 一样的 , 不再赘述 。 如果把 CPU中断响应周期的动作和前面讲到的中 断响应过程结合起来 , 当 一个可屏蔽中断被响应时 , CPU实际执行了 7个总线周期 , 即: 42 执行第一个 INTA周期。 执行第二个 INTA周期,被响应的外设通过 D0 D7的 8位数据线提供中断类型码 n( 由 8259A提 供), CPU接到类型码后,将它左移两位,形成 向量表指针存入暂存器。 执行一个总线写周期,把 FR压栈。同时 IF和 TF为 0,以禁止中断响应过程中,其他可屏蔽中断的进 入,同时也禁止了中断过程中出现单步中断。 43 执行一个总线写周期 , CS压栈 。 执行一个总线写周期, IP压栈。 执行一个总线读周期,从中断向量表中取出中断 服务程序入口地址的偏移量送 IP中。 执行一个总线周期,从中断向量表中取出中断服 务程序入口地址的段值送 CS。 对于非屏蔽与软中断跳过第 、 步 , 从第 步 开始执行到第 步 。 44 6.4.4 各类中断的优先权及中断响应 8086/8088系统中 , 中断优先权次序从高到低为: 除法出错 、 INTn、 INTO、 NMI、 INTR、 单步中断 。 除单步之外的内部优先权最高 , 其次是非屏蔽中 断 , 再次是可屏蔽中断 , 而单步最低 。 45 6.5 8259A可编程中断控制器 6.5.1 8259A的功能、结构及工作原理 1. Intel 8259A 是与 8086系列 CPU兼容的可编程中断 控制器 , 它的主要功能为: ( 1) 具有 8级优先权控制 , 级连可扩展至 64级 。 ( 2) 每一级中断都可以屏蔽或允许 。 ( 3) 在中断响应周期 , 8259A可提供相应的中断向 量号 ( 中断类型号 ) 。 ( 4) 8259A的工作方式 , 可通过编程来进行选择 。 46 2. 结构 ( 1) 8259A的内部结构 8位寄存器,是 8259A与外设中断源的接口。 通过 IR7 IR0与 8个中断源相接。当有某个 中断源申请中断时,使 IRR的相应位置 1。最 多可同时接收 8个中断源的中断申请。 8位寄存器,用于设置 中断请求的屏蔽信号。 第 i位被置 1时,与之对 应的 IRi被屏蔽,不能向 CPU发 INT信号。可通 过软件设置其内容,确 定每个中断请求的屏蔽 状态。设置 IMR也可起 到改变中断请求优先级 的效果。 8位寄存器,寄存所有正在被服务的中断级。第 i位置 1表示 CPU正为 IRi中断源服务,该信号一直保持到 CPU处理完该中断服务程序为止。该中断处理结束前, 要使用 指令 清除这一位。 ISR可被 CPU读出。当有多 位置 1时,表示发生了中断嵌套。 对在 IRR中的中断请求,经判断确定最高的优先权, 并在中断响应用周期把它选通送至 ISR 8位双向三态缓冲器 , 是 8259A与系统数 据总线的接口 。 8259A通过它接收 CPU发 来的控制字 , 也通过它向 CPU发送中断 类型代码和状态信息 。 接收 CPU的读 /写命令。 CS和地址线 A0决定访问 8259A的哪个寄存器。 用于多块 8259A的连 接,使中断可由 8级 扩展到 64级 47 8259A的引脚 双功能信号。当 8259A工作与缓冲器方 式时,它作为控制缓冲器传送方式的输 出信号;当工作与非缓冲方式时,用于 规定其是主 8259A还是从 8259A 48 3. 8259A的工作原理 当系统通电后,首先应对 8259A初始化。(由 CPU 执行一段程序,向可编程芯片写入若干命令字,规定 其工作状态,使其处于准备就绪的状态。) 8259A对外部中断请求处理过程如下: (1) 当有 IR0 IR7变 高,则 IRR的相应位置 1。 (2) 若中断请求线中至少有一条是中断允许的,则 由 INT 引脚向 CPU发出中断请求。 (3) 若 CPU处于开中断状态,则在当前指令执行完后, 用 INTA信号作为响应。 49 (4) 8259A接到 INTA后,使最高优先权的 ISR位置 1, 而相应的 IRR位复位。在此周期中, 8259A不向系 统数据总线送任何内容。 (5) 在中断响应周期的第二个信号期间 8259A向数据总 线输送一个 8位指针(向量号或类型号), CPU读 取此类型号,类型号 *4作为地址就可从中断向量 表中取出中断服务程序入口地址。 (6) 若 8259A工作在自动结束中断 AEOI方式 ( Automatic End Of Interrupt) ,在第二个 INTA 结束时,使中断源在 ISR的相应位复位。否则,直 至中断服务程序执行到 EOI命令,才使 ISR的相应 位复位。 50 6.5.2 8259A的编程 8259A的编程分两部分: ( 1)初始化编程 由 CPU向 8259A送 2 4字节的初始化命令字 ICW ( 2)工作方式编程 由 CPU向 8259A送三个字节的工作命令字 OCW, 以 规定 8259A的工作方式。该命令字可在 8259A初始化命 令字 ICW后的任何时间写入。 51 1. 8259A的初始化编程 8259A的初始化命令字共 4个 ( ICW1 ICW4) 设置过程如图: 52 写初始化命令字 ICW1 芯片控制字 对 8086/8088无效 ICW1 识 别 位 偶 地 址 74 0 0 0 0 53 ( 2) 写初始化命令字 ICW2 中断类型控制字 ( 中断类型码 ) 用来定义中断类型码的高 5位 T7 T6 T5 T4 T3 中断类型码的高 5位 自动填入 IR0 000 IR1 001 IR2 010 IR7 111 奇 地 址 74 54 (3) 写初始化指令字 ICW3 主 /从片初始化 ( 级连控制字 ) 奇 地 址 奇 地 址 55 (4) 写初始化命令字 ICW4 方式控制字 对于 8086/8088系统是必须设置的初始化命令字 奇 地 址 74 1 56 2. 8259A的操作命令字 三个操作命令字 OCW1 OCW3。 在设置操作命令字时,顺序上没有严格的要求,但端 口地址上有严格的规定。 OCW1必须写入奇地址端口( A0=1) OCW2和 OCW3必须写入偶地址端口( A0=0) 57 操作命令字 OCW1 屏蔽操作命令字 用来设置或清除对中断的屏蔽(设置 IMR的值) 75 奇 地 址 允许中断 中断源被屏蔽 58 ( 2) 操作命令字 OCW2 中断方式命令字 设置优先级循环和中断结束方式 偶 地 址 64 75 若 ICW4设置正常结束访问, 则在 IRET前写 OCW2, 使 EOI=1, ISR复位 1. 若 OCW2中设置特殊优先级循环方式时, 最低优先级编码。 2. OCW2中设置特殊中断命令结束,指具 体清除哪一位。 59 (3) 操作命令字 OCW3 状态操作命令字 设置和撤销特殊屏蔽方式、设置中断查询方式、 设置对 8259A内部寄存器的读出命令 允许特殊屏蔽模式 撤销特殊屏蔽模式 60 注意: 1. 如何区分 OCW2, OCW3? 用 D3位,即两个操作命令字的标识位 2. 如何区分 ICW1, OCW2, OCW3? D3=0 OCW2 D3=1 OCW3 D3 D4=1 ICW1 D4=0 OCW2, OCW3 用 D4位 61 6.5.3 8259A的工作方式 1 ( 1)全嵌套方式 当工作在全嵌套方式时, 8259A写入初始化命令 字后,中断优先权是固定的,即 IR0优先权最高, IR7 优先权最低。当 CPU响应中断时,申请中断的优先权 最高的中断源在 ISR中相应位置位,而且把它的中断 向量号(类型码)送到数据总线,在此中断源的中断 服务程序完成前,与它同级或优先权更低的中断源申 请被屏蔽,只有优先权比它高的中断源的申请才允许。 62 ( 2)特殊全嵌套方式 级连情况 与全嵌套方式不同之处 : 当某一从片中断请求被响应后,主片不封锁从片的 INT输入端,使该从片优先级更高的中断源的请求 能得到响应。 当从片中断处理快要结束时,用软件检查从片中断 服务寄存器 ISR的内容是否为 0,若为 0,则这个从 片的中断请求是唯一的,此时连发两个中断结束命 令 EOI, 使主片、从片都结束中断。若只发一个 EOI命令则只结束从片,不结束主片中断。 63 2 8259A中有两种改变优先权的办法 自动循环方式 初始优先级顺序为 IR0最高, IR7最低,当某一个中断源 服务完以后,它的优先级 变成最低的 。 64 ( 2) 特殊循环方式 如果中断源的优先权需要任意改变,就必须工作 在特殊循环方式下。此时,可用程序通过写 OCW2 来改变优先权。 例如 : 设置 IR5为最低优先权,则 IR6的优先权就变 为最高。这时 OCW2最高三位为 110,而最低三位 L2 L0应为 101(最低优先权编码)。 OCW2: 1 1 0 0 0 1 0 1 65 3. 8259A的 8条中断请求线的每一条都可根据需要单独 屏蔽,可通过 写入 OCW1的命令字 来实现。 8259A有两种屏蔽方式: ( 1) 普通屏蔽方式 特点:当执行某一级中断服务程序时,只允许比该级 优先级高的中断源申请中断,不允许同级或低 级的中断源申请中断。 方法:用 OCW1将 IMR寄存器某一位或几位置 1,即可 将相应的中断请求屏蔽掉。 使用情况:当 CPU执行主程序时,可将不希望响应的 中断源屏蔽;当 CPU执行某中断服务程序时, 可将不希望响应的比此优先级高的中断源屏蔽。 66 ( 2) 特殊屏蔽方式 特点: CPU正在处理某一级中断时,只可对本级中断进行 屏蔽,允许级别比它高的或比它低的中断源申请中 断。 方法: 在某级中断服务程序中首先 用 OCW3设置该方式 (即 D6D5=11) ,然后设置 OCW1使该级的中断申请 被屏蔽,只有写入这两个控制字之后,才能使中断 屏蔽寄存器 IMR中该级中断位被屏蔽( =1),不允 许发生同级中断,同时使中断服务寄存器 ISR相应位 置 0,允许比该级低级别的中断源申请中断。 若想退出此方式,通过设置 OCW3的 D6D5=10,再 执行输出指令即可。 使用情况:在中断处理过程中,需要动态改变系统的优先 级结构时。 67 4. 程序查询方式 (一般用于多于 64级的中断的场合) CPU利用查询命令( OCW3中 D2=1) 获得当前请 求服务的优先级。此时 8259A内部仍进行 8级中断请求 的判优和屏蔽管理。 查询命令发出后,执行一条输入 指令,可得到查询字。 D7=1 有中断请求 D7=0 无中断请求 当前发出中断请求级别 最高的中断信号 68 5. 中断结束命令 根据不同的工作方式 8259A可以有几种不同的结 束方法。 ( 1)自动中断结束方式( AEOI) 特点:中断服务寄存器 ISR的相应位清零是由硬件自 动完成的。当某一级中断被 CPU响应后, CPU 送回第一个 INTA中断响应信号,使 ISR的相应 位置 1,当第二个 INTA负脉冲结束时,自动将 ISR的相应位置 0。 实现方法:通过将 ICW4的 D1位设置为 1实现。 使用环境:适用不要求中断嵌套的情况。 69 ( 2) 非自动中断结束方式( EOI) 特点:中断返回前,必须用指令向 8259A发中断结束命 令,即使 ICW4的 D1=0。若级连,发 2个。 方法:首先将 ICW4的 D1=0,定为正常中断结束方式, 然后用 OUT向 8259A的偶地址端口输出 OCW2操作 控制字( OCW2的 D7D6D5=001),实现自动结束 命令。 使用环境:一般的中断结束方式只能应用于全嵌套方式 下,不能用于优先级自动循环方式和优先级特殊循 环方式。因为一般中断结束方式结束的中断是尚未 处理完的级别最高的中断。若中断级别改变,会使 整个中断过程混乱。 70 ( 3) 特殊中断结束方式 特点:通过用指令发一中断结束命令,同时给出结束中 断的中断源是哪一级,使该中断源的中断服务寄存 器 ISR的相应位置 0。 使用环境:可应用在任何情况下,但要在中断处理中给 出中断结束命令。 使用方法:首先将 ICW4的 D1=0,定为正常中断结束方 式,然后通过将 OCW2的 D7D6D5=011或 111, D2D1D0位指出结束中断处理的中断源号,使该中 断源在中断服务寄存器 ISR中的相应位清零。 71 6. 读 8259A 的状态 8259A的 IRR、 ISR、 IMR的状态,可通过读命令读 入 CPU, 供用户了解 8259A的工作情况。 (1) 再读命令之前,输出一个 OCW3, 令其 RR=1, RIS=0( D1D0=10), 可利用读命令读入中断请求寄存 器 IRR的状态。若 RR=1, RIS=1( D1D0=11), 可利用 读命令读入中断服务寄存器 ISR的状态。 (2) 对奇地址端口( A0=1) 进行读操作,可读的中 断屏蔽寄存器 IMR的值。 72 6.5.4 由多片 8259A组成的主从式中断系统 在一个系统中若中断源多于 8个,必须采用多片 8259A 进行级连。其中有一片主 8259A, 若干片从 8259A, 可把 中断源扩展到 64个。 73 6.5.5 8259A的编程实例 1.初始化编程 例 6-1:对 IBM PC/XT机中使用的 8259A初始化编程 。 硬件连 接如图 。 74 设置 ICW1为边沿触发,单片 8259A 需要 ICW4。 方式字: 00010011 MOV AL, 13H OUT 20H, AL 设置 ICW2 类型码为 00001000( IR0) MOV AL, 08H OUT 21H, AL 设置 ICW4,全嵌套方式,缓冲方式 , 正常 EOI 。 方式字: 00001101 MOV AL, 0DH OUT 21H, AL 根据系统要求 初始化编程 如下: 在 IBM PC机中,只有一片 8259A, 可接外部 8级中断, 8259A的端口地址为 20H和 21H。 对 8259A的初始化规定:边 沿触发方式,缓冲方式,中断结束为 EOI命令方式,中断优 先权管理采用全嵌套方式。 8级中断源类型码为 08H-0FH。 75 初始化完成后, 8259A处于全嵌套工作方式,可以响应外 部中断。根据要求 设置 8259A的操作命令字 OCW1 OCW2 ( 1)如允许时钟,键盘,异步通信卡 (COM1)中断,设置 OCW1为 0ECH( 屏蔽字)。 11101100 MOV AL, 0ECH OUT 21H, AL ( 2)由于 正常 EOI, 因此在中断服务程序结束后,返回断 点前必须 对 OCW2写入 00100000即 20H作结束中断操作命令。 MOV AL, 20H ; 设置 OCW2的值为 20H OUT 20H, AL ; 写入 OCW2的端口地址 20H IRET ; 76 2. 应用实例 例 1 设 8086系统中 8259A的端口地址为 1CE0H、 1CE2H , 中断请求信号采用电平触发方式,单片 8259A, 中断类型 号高 5位为 00010,中断源接在 IR3中,不用特殊全嵌套方 式,用非自动结束方式,非缓冲方式。编写初始化程序。 MOV DX, 1CE0H; 8259A偶地址 MOV AL, 00011011B; 设置 ICW1控制字 OUT DX, AL MOV AL, 00010011B; 设置 ICW2中断类型号 MOV DX, 1CE2H; 8259A奇地址 OUT DX, AL MOV AL, 00000001B; 控制字 ICW4 OUT DX, AL 77 例 3: PC/XT机中有一片 8259A, 端口地址为 20H, 21H。 边沿触发,工作于缓冲方式,非自动结束,中断采 用全嵌套方式。 8259A的中断类型码为 08H-0FH, 利 用 IR2使 8259A中断 10次,依次输出 ABC, 对 8259A 初始化并编写相关的主、子程序。 解:对 8259A初始化 ICW1: 00010011 13H ICW2: 00001010 0AH ICW4: 00001101 0DH OCW1: 11111011 FBH OCW2: 00100000 20H 例 2 P203 78 DATA SEGMENT M1 DB ABC$ M2 DW 1 DUP (?) M3 DW 1 DUP (?) DATA SEGMENT STACK SEGMENT DQQ DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK START: MOV AX, DATA MOV DS, AX MOV AX, STACK MOV SS, AX MOV SP, SIZE DQQ 79 MOV AL, 13H ; ICW1 OUT 20H, AL MOV AL, 0AH ; ICW2 OUT 21H, AL MOV AL, 0DH ; ICW4 OUT 21H, AL CLI ; IF=0,关中断 MOV AX, 350AH ; 调用系统 21H号中断 的 35H号功能将 INT 21H; 系统中原 0AH号中断向量取出保存在 ES: BX MOV AX, ES MOV M2, AX MOV M3, BX PUSH DS 80 MOV DX, SEG INT2 ; 取中断服务子程序的段地址 MOV DS, DX MOV DX, OFFSET INT2; 取中断服务子程序的偏移地址 MOV AX, 250AH; 调用系统 21H号中断的 25H号功能将 INT 21H; 新的中断向量装入 POP DS IN AL, 21H; 取中断屏蔽寄存器内容 AND AL, 0FBH; 开放 IR2的中断 OUT 21H, AL MOV BX, 0AH ; 中断次数 81 LL: STI; IF=1, 开中断 HLT; (1)RESET (2)NMI (3)INTR DEC BX JNZ LL PUSH DS MOV DX, M3 MOV AX, M2 MOV DS, AX MOV AX, 250AH; 恢复 IR2的向量中断 INT 21H POP DS MOV AX, 4C00H INT 21H 82 INT2 PROC MOV DX, OFFSET M1; 显示字符串 MOV AH, 09H INT 21H MOV AL, 20H; OCW2 OUT 20H, AL IRET INT2 ENDP CODE ENDS END START 83 取中断向量: 功能号 =35H AL=中断类型号 ES:BX=入口地址 置中断向量: 功能号 =25H AL=中断类型号 DS:DX=入口地址 84 第二章 作业答案 5. (1) CF=0 PF=1 AF=1 ZF=0 SF=0 OF=0 (2) CF=0 PF=0 AF=0 ZF=0 SF=0 OF=0 (3) CF=0 PF=1 AF=0 ZF=0 SF=0 OF=0 (4) CF=0 PF=1 AF=0 ZF=1 SF=0 OF=0 15. 物理地址为: 1200H 16+0FF00H=21F00H (1200:0FF00H) CS和 IP的址不是唯一的 16. 64K 10000H1FFFFH 85 第三章 作业答案 2. 全部非法 3. (1) AX=3355H SP=1FFEH (2) AX=3355H CX=3355H DX=4466H SP=2000H 4. (1) MOV AX, 1234H MOV DS, AX (2) ADD AX, 5678H (3) MOV AX, DATA ADD DATAY, AX (4) AND AX, 0FFFH (5) OR BX, 0003H (6) XOR CX, 00F8H 86 5. AF OF ZF SF PF CF ( 1) 1 0 0 0 0 1 ( 2) 0 0 0 0 0 无影响 ( 3) 1 0 0 0 0 1 ( 4) 1 0 0 1 0 1 ( 5) 任意值 0 0 0 1 0 ( 6) 任意值 1 任意值 任意值 任意值 1 ( 7) 1 0 0 0 0 1 ( 8) 任意值 0 任意值 任意值 任意值 0 ( 9) 任意值 0 0 1 1 0 ( 10) 任意值 0 1 0 1 0 87 6. (1) DX=1B52H CF=1 (2) DX= 06D4H CF=1 (3) DX=0B528H CF=1 (4) DX=364AH CF=1 (5) DX=0A6D4H CF=1 (6) DX=362DH CF=1 (7) DX=6CA5H CF=0 (8) DX=06A5H CF=1 (9) DX=0B52CH CF=1 (10) DX=66D4H CF=1 88 7. AX=7D00H BX=7D01H CL=3 9. MOV SI, OFFET BUF MOV AL, SI SUB AL, SI+2 DAS MOV SI+4, AL MOV AL, SI+3 SBB AL, SI+1 DAS MOV SI+5, AL
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!