第七章 输入输出与中断技术
期末考试重点
单纯写一遍课后习题 并非全面复习
CPU与外设连接要通过I/O接口挂到总线上的原因
这是相对于存储器直接受CPU的控制而言
存储器 | I/O设备 |
---|---|
品种有限 | 品种繁多 |
功能单一 | 功能多样 |
传送一个字节 | 传送规律不同 |
与CPU速度匹配 | 与CPU速度不匹配 |
易于控制 | 难以控制 |
接口电路的基本结构
数据信息
- 数字量 8位2进制码或者ASCII码
- 模拟量 模拟电流或电压
- 开关量 0或1
状态信息
- 输入时告诉计算机是否准备好READY=1?
- 输出是告诉CPU输出设备是否空闲BUSY=0?
控制信息
- 控制外设的启动或停止
基本结构的特点
- 3种信息性质不同,通过不用端口传送。
- 在寻找外设的CPU(如8086/8088中),外设的状态作为一种输入数据,CPU控制命令作为一种输出数据。
- 端口地址由CPU地址总线的低8位或低16位地址信息确定。
CPU与外设间传送数据的方式及其特点
- 程序传送,指数据交换是在程序控制下进行的。
无条件传送,针对简单外设,实质是用程序来定时同步传送数据。
程序查询传送,有条件的异步传送。条件:IN或OUT之前,要先查询接口中状态寄存器的状态。
- 中断传送,中断就是指外设终止CPU正在执行的程序,转向为外设服务,
- 直接存储器存取传送,DMA方式,由专门硬件电路执行I/O交换的传送方式。让外设不经过CPU实现对存储器的直接存取。
三态缓冲器的作用
使三台输出收到使能输出端的控制,当使能输出有效时,器件实现正常输出,当使能输入无效时,处于高阻状态。三态缓冲器使高速工作的CPU与慢速工作的外设起协调和缓冲作用,实现数据传送的同步。
中断
中断是指CPU正常执行程序时,由于某种随机出现的事件,使CPU暂停运行原来的程序而去处理执行中断服务程序。待该程序处理完后,再返回运行原程序。
中断源
指引起中断的事件或者愿意,或发出中断申请的来源。
外部中断源,指由CPU的外部事件引发的中断。
-
一般中慢速外设
,键盘、打印机、鼠标。 -
数据通道
,磁盘、网络。 -
实时时钟
,定时器 -
故障源
,电源掉电、外设故障。
指由CPU内部事件引发的中断。
- CPU执行中断指令 INT N引起的中断
- 由CPU的某些运算错误引起的中断
- 为调试程序设置的中断
- 特殊操作引起的中断
中断系统
为实现中断而设置的各种硬件与软件,包括中断控制逻辑以及相应管理中断的指令。
中断系统功能
- 响应中断、处理中断与返回
- 能实现优先权排队
- 高级中断源能中断低级中断处理
中断技术的优点
- 解决快速CPU与中、慢速外设速度不匹配的矛盾
- 提高主机的工作效率
- 实现分时操作、实时处理、故障处理、多机连接
- 实现人机联系
CPU响应中断的条件
- CPU开放中断
- CPU在现行指令结束后响应中断
有了这些条件才能确保CPU能正常执行中断,且有确定的执行中断开始前的程序进行的位置。
CPU在中断周期的主要操作
- 关中断
- 保留断点
- 保护现场
- 给出中断入口,转入中断服务程序
- 恢复现场
- 开中断与返回
中断操作和DMA的异同
相同点
- 都由随机请求引起
不同点
- 中断方式通过执行处理程序进行处理,DMA方式直接依靠硬件传送数据
- 中断方式可以处理复杂事件,DMA方式适用于简单的、高速的数据批量传送。
中断向量和向量中断辨析
- 中断发生时,由中断源自己引导处理进入中断服务程序的中断过程叫做向量中断。
- 中断向量是指该类型中断的中断服务例行程序的入口地址和处理器状态字。
中断向量包含两个字:入口地址,处理器状态字
中断向量表
中断向量表是中断类型号与相应中断源的中断处理程序入口地址之间的连接表。8086系统的中断向量表存放了256个中断向量。例如中断类型号为100的中断向量,就存放在(100*4)D=190H处。
中断过程与主程序调用子程序过程的比较
- 相同:
- 都需要保护断点,跳转到子程序或中断服务程序,恢复现场,恢复断点。
- 两者都能实现嵌套。
- 不同:
- 根本区别是服务时间和服务对象不一样。调用子程序过程的时间是已知和固定的,中断过程发生的时间一般是随机的。
- 子程序与主程序属于主从关系,中断服务与主程序一般是无关的,是平行关系。
- 主程序调用子程序完全属于软件处理过程,中断处理系统是一个软硬件相结合的系统,需要专门的硬件电路。
- 子程序嵌套可以实现若干级,中断嵌套级数由中断优先级数来决定,一般级数不会很大。
保护断点和保护现场的异同
相同:都是把要保护的信息压入栈中,等程序执行完之后出栈。
不同:保护断点只是把CS和IP压入堆栈,但是保护现场指的是将那些所需要用到的寄存器也也压入堆栈中。
可屏蔽中断的一般处理过程
- 发出中断请求
- 执行完当前指令后,CPU响应中断
- 将中断类型号传送至CPU
- CS,IP,HE,EFR入栈
- 清除IF,TF
- 通过中断类型号获取中断入口地址
- 执行中断
- 开中断
- IRET,恢复现场,返回被中断的源程序
中断控制器8259A
中断控制器是专门用来处理中断的控制芯片,用在有多个中断源的系统中,协助CPU实现对外部中断请求的管理。
Intel 8259A是一个可编程的8输入端中断控制器,主要功能如下:
- 单片8259A能管理8级中断,同时可以用级联方式,用9片8259A构成64级主从式中断系统
- 当有多个中断请求时,能判别优先权先后
- CPU响应中断后,能在中断响应周期内提供对应的中断类型号,使CPU转向中断入口
- 可通过编程按多种不同方式工作
全嵌套方式和特殊全嵌套方式的区别
- 两者都是将中断请求按0-7级进行处理,0级中断的优先级最高,7级的优先级最低。在全嵌套方式中,只有更高级的中断请求才能实现嵌套,同级中断请求到来时不会响应。在特殊的全嵌套方式中,允许响应或嵌套同级的中断请求。
- 一般来说,特殊的全嵌套方式适用于多个8259A级联的系统情况下对主片的编程,但对从片编程时,仍让其处于其他优先级方式。
8259A中的中断屏蔽寄存器IMR和8086/8088的中断允许标志IF的区别
- IF是内部标志寄存器的一位,若IF=0,8086就不响应外部的可屏蔽中断请求,只有当IF=1时,8086才会响应。
- 8259A通过使中断屏蔽寄存器IMR中某一位或几位置1来实现将对应位的中断请求屏蔽掉。是通过写操作命令字OCW1来实现屏蔽中断请求。
使用EOI来结束中断服务的原因
给8259A芯片发送EOI命令,就是通知8259A芯片一个中断已经完成,8259A将ISR中的位清除,以便之后继续接受中断。如果不发送EOI命令,那么8259就会认为中断一直在执行,无法继续正常响应其他低级别中断。
中断请求寄存器IRR
这8位寄存器用于接收外部中断请求,IRR中的8位分别与引脚IR0-IR7对应。当某一个IRi端接收中断请求信号呈现高电平时,则IRR的相应位置为1。当中断请求被响应时,IRR的相应位复位。
中断服务寄存器ISR
这8位寄存器用来存放或记录正在服务器中的中断请求信号。当某一级中断请求被响应,CPU正在执行其中断服务程序时,则ISR中相应的位置将被置为1,并将一直保持到该级中断处理过程结束为止。多重中断中,ISR有可能多位被置1。置1的过程是:若有一个或多个中断源同时请求中断,他们将先由优先级判别器选出当前在IRR中置为1的各种中断优先级别中的最高者,并用INTA负脉冲选通送入ISR寄存器的响应位。
某8086系统中,若8259A处于单片、全嵌套工作方式,并且采用非特殊屏蔽和非特殊结束方式,中端请求采用边沿触发,IR0的中断类型码为60H,试编写8259A的初始化程序。设8259A的端口地址为93H、94H。
mov al, 93H ;指向端口
out al, 00010011b ;写ICW1
mov al, 94H ;更换端口
out al, 60h ;写ICW2
out al, 00000001b ;写ICW4
屏蔽IR2和IR4引脚上的中断请求,设8259A端口地址为53H、54H
mov al, 54h ;指定端口
out al, 14h ;发出OCW1信号
- 单片8259A能够管理8级可屏蔽中断,三片8259A级联最多可以管理22级。
一个8259A主片,连接两个8259A从片,从片分别经主片的IR2及IR5引脚接入,系统中优先排列次序
优先级从高到底是:
- 主片IR0,IR1
- 从片1的IR0-IR7,
- 主片IR3,IR4
- 从片2的IR0-IR7
- 主片IR6,IR7
当中断控制器8259A的A0接向地址总线的A1时,若其中一个地址为62H,则另一个口的地址为
- 62H = 01100010B,A0=1,该端口为奇端口,则另一端口必然为偶端口,即A0=0,对应地址总线A1=0,所以端口地址为60H。若中断类型码为56H,最后三位为110,所以和IR6相连。