【教学课件】第9章输入输出和中断程序设计.ppt
《【教学课件】第9章输入输出和中断程序设计.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第9章输入输出和中断程序设计.ppt(73页珍藏版)》请在三一办公上搜索。
1、第9章 输入输出和中断程序设计,基本内容,输入输出指令查询传送方式中断概述中断处理程序设计BIOS功能调用,9.1 输入输出指令,I/O端口地址的分配I/O指令数据传送方式,9.1.1 I/O端口地址的分配,计算机系统通过接口与外围设备通信的,每个接口由一组寄存器组成,为了存取这些寄存器中的数据,系统为这些寄存器分配有专门的地址,即I/O端口地址。在80X86微机中,I/O端口地址是一个连续的独立的地址空间,范围从0000H FFFFH,共64KB,因此允许设置64K个8位端口或32K个16位端口.但实际中,由于系统的外围设备数量有限,只使用这些I/O端口地址的很小一部分。下表列出80X86微
2、机的常见外设的I/O端口地址。,部分I/O端口地址分配情况,9.1.2 I/O指令,对于I/O设备与内存独立编址的系统,有专门的I/O指令实现I/O设备与系统的通信,存取端口寄存器,完成输入输出.输入指令 输出指令,输入指令,输入指令从一个输入端口读取一个字或字节,传送至寄存器AL或AX中,有直接寻址和间接寻址 两种方式,直接寻址方式的端口地址是一个范围 0 255的立即数.间接寻址方式的端口地址在DX 寄存器中,地址范围0-65535。,例:下面两条指令分别表示从端口26H读取一个字和一个字节。IN AX,26H IN AL,26H,当端口地址超过255时,必须采用后两种间接寻址方式.例:下
3、面两条表示分别从端口2FAH和2FBH输入一个字节 送AL和AH.MOV DX,2FAH IN AX,DX,输出指令,输出指令将AL中的一个字节或AX中的一个字输出 到指定端口,有直接寻址和间接寻址两种方式。直接寻 址方式的端口地址是0 255之间的立即数;间接寻址方式的端口地址(范围0 65535)放在DX中。,例:OUT 8,AX表示从AX寄存器输出一个字到8号端口。,例:MOV AX,6F24H MOV DX,2FDH OUT DX,AX表示将24H输出至端口2FDH,将6FH输出至端口2FEH。,9.1.3 数据传送方式,无条件传送方式 查询方式 中断方式 直接存储器存取(DMA)方式
4、,无条件传送方式,微机系统中,有些简单的I/O设备在工作时,随时都准备好向CPU传送数据或准备好接收CPU的输出数据。也就是说,在工作中,系统不需要查询这些设备的状态,可以直接使用指令IN或OUT实现数据交换。这种方式实现简单,但在CPU与这些设备交换数据时,数据交换与指令的执行必须同步,否则就可能出错。,查询方式,查询方式适用于与CPU不同 步的I/O设备。,查询方式的工作过程是:如CPU要从 I/O设备接收数据,先查询I/O设备状态,看数据是否准备好,如果没有准备好则继续查询;如数据已准备好,CPU就从该设备读取数据,之后,CPU向该I/O设备发送响应信号,表示数据已被接收。I/O设备在收
5、到响应信号后,开始准备下一个数据的准备。,Y,中断方式,用中断方式传送数据,可提高CPU效率,并 对一些状态进行实时响应。,直接存储器存取方式,直接存储器存取方式适用于高速I/O设备与CPU之间的高 速数据交换。其工作过程如下:(1)I/O设备向DMA控制器发出DMA传送请求;(2)DMA控制器向CPU发出HOLD信号,向CPU提出DMA请求;(3)CPU向DMA控制器发出响应信号,将总线控制权交与 DMA控制器;(4)DMA控制器控制总线并向I/O设备发出DMA应答信号;(5)DMA控制器分别通过地址总线和数据总线送出传输 数据的存储器地址和要传输的数据;(6)数据传送完毕,DMA控制器通过
6、HOLD撤消对CPU的 DMA请求。,9.2 查询传送方式,查询方式的基本思想是:CPU主动地通过输入输出 指令查询指定I/O设备的当前状态,若设备准备就绪,则 立即与设备进行数据交换,否则循环查询。因此,查询传送方式要求相应的I/O接口除了要有数 据寄存器外,还要有状态寄存器,有些I/O设备还要有控 制寄存器。,9.3 中断概述,中断的概念中断源及中断分类中断向量表中断响应过程中断优先级和中断嵌套中断指令,9.3.1 中断的概念,中断是一种使CPU中止正在执行的程序而转去处理 特殊事件的操作。具体说就是在CPU执行程序的过程中,需要对外设进行输入输出操作,或由于某种事件发生,强迫CPU暂停当
7、前执行的程序,转去执行输入输出操作 或对该事件进行处理,当完成输入输出操作或处理事件 结束,CPU又返回到原来的程序,接着中止前的状态继 续执行。,9.3.2 中断源及中断分类,引起中断的事件就称为中断源。中断可分为内部中断和外部中断。内部中断又称软件中断。内部中断的中断事件是 由系统内部产生的,如CPU运算时,商超出寄存器所表 示的范围,或程序中有软件中断指令等都是内部中断。外部中断又称为硬件中断。外部中断是由外设控 制器等外部条件产生的中断,如某些设备出现故障,某 些I/O设备请求输入输出数据等.均可产生中断。,内部中断,主要有以下5种(1)除法错中断 在执行除法指令时,如果商超过了寄存器
8、所能表示的范围或除数为0,则立即产生一个类型为0的中断。(2)溢出中断 CPU在进行算术运算时,如发生溢出,则将溢出标志OF置1,此时指令INTO中断发生溢出的算术操作,其中断类型号为4;如果OF为0,INTO指令不产生中断。(3)指令INT产生的中断 可以用INT n指令产生内部中断,CPU执行此指令时,立即产生中断,根据中断类型号n调用系统中相应的中断处理程序。,(4)单步中断 单步中断是为程序调试设置的.CPU每执行完一条 指令都要检测陷阱状态标志TF,如果TF为1,CPU产生类 型号为1的中断,即单步中断.单步中断使CPU一次执行一条指令,程序调试过程 中,通过单步中断可以看出每条指令
9、执行后,寄存器和 存储单元的变化。(5)断点中断 断点中断也是为程序调试设置的。调试程序时,可 以根据功能不同将程序分为几个程序段,每段设置一 个断点,CPU执行到断点时产生类型为3的中断。,外部中断,外部中断包括非屏蔽中断NMI和可屏蔽中断INTR。非屏蔽中断不受中断标志位IF的影响,CPU不能禁 止非屏蔽中断.当NMI请求发生,CPU在一条指令执行结 束后,将对它作出响应。非屏蔽中断主要用于一些紧急 故障处理,如电源掉电、内存的奇偶错等。,可屏蔽中断常用于外设的中断处理,这些设备通过可编程中断控制器8259A与CPU相连,可编程中断控制器8259A通过中断请求输入端接收外设的中断请求信号,
10、并将相应的中断类型号提供给CPU。CPU是否响应外设的中断请求取决于两个条件:一是外设的中断请求是否被屏蔽;二是CPU是否被允许响应中断。其中第一个条件是由可屏蔽中断控制器8259A的中断屏蔽寄存器(如下图)控制的,中断屏蔽寄存器的端口地址为21H,它的某位为0,则表示允许该位对应的外设的中断请求。第二个条件是由标志寄存器的中断标志位IF控制的,该位为1,允许CPU响应外设的中断请求,即处于开中断状态。,用OUT指令设置中断屏蔽寄存器;用STI(IF=1)指令和CLI(IF=0)指令对中断标志位IF进行设置和清除。,打印机,软盘,硬盘,串行口2,定时器,键盘,保留,串行口1,D7 D6 D5
11、D4 D3 D2 D1 D0,中断屏蔽寄存器,9.3.3 中断向量表,每个中断源对应一个中断处理程序,每个中断处 理程序对应着一个中断类型号,80X86中断系统可处理 256种类型的中断,对应的类型号为0 0FFH。为处理方便,把所有256种中断处理程序的入口地址都集中放在一起,形成一张表,即中断向量表(如下图)。中断向量表中的每一项占用4个字节,其中高地址的两个字节存放中断处理程序的段地址,低地址的两个字节存放中断处理程序的偏移地址。中断向量表所占空间为1K(256*4)字节,系统将存储器的地址范围从0000H 3FFH的1K字节用来建立中断向量表,顺序存放256个中断向量。,中断向量表,0
12、03FCH,0000CH,00008H,00004H,00000H,9.3.4 中断响应过程,当中断发生时,硬件完成以下操作:(1)取中断类型号n;(2)将标志寄存器内容压栈;(3)当前代码段寄存器(CS)内容和指令计数器(IP)内容入栈;(4)置标志位IF和TF为0,禁止外部中断和单步中断(5)从中断向量表中取4*n地址(16位)的内容送IP,取4*n+2地址(16位)的内容送CS;(6)执行中断处理程序。,9.3.5 中断优先级和中断嵌套,中断优先级指多个中断源同时向CPU请求中断时,CPU响应中断的优先顺序。80X86系统为各种中断源规定了一个中断优先级次序,当多个中断源同时申请中断时,
13、CPU按从优先级高到优先级低的顺序依次处理各中断源的中断请求。,中断优先级,80X86系统的中断优先级次序是:优先级高 内部中断(除单步中断、断点中断外)非屏蔽中断 可屏蔽中断 低 单步中断,其中可屏蔽中断的优先级又分为IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7等8级,IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7即为正常的优先级方式下的优先级次序。,各外设的中断优先权对应哪一级由硬件连线和可编 程中断控制器8259A的中断命令寄存器(下页图)决定。中断命令寄存器中的端口地址为20H,其中D7位(R)为优先级循环控制位,R=1为循环优先级;R=0为固定优 先
14、级。D0 D2位(L0 L2)为系统最低优先级编码,用这三位指定哪个中断请求的优先级最低。D5位(L5)是中断结束位,当EOI位为1时,当前正在处理的中断请求将被清除。D6位(SL)用于选择L2、L1、L0编码。,D7 D6 D5 D4 D3 D2 D1 D0,中断命令寄存器,如要使中断优先级依次循环到IR6为最低优先级,即优先级优先级顺序为:IR7 IR0IR1 IR2 IR3 IR4 IR5 IR6,则需送命令码11100110到端口20H。,中断嵌套是指正在运行的中断处理程序,又被其它 中断源中断。,中断嵌套,从中断的响应过程知道,当CPU响应一个中断时,总是自动将IF和TF位置0,即先
15、关中断,禁止任何外设新的中断请求。为了实现多级中断处理,允许在中断处理程序执行过程中发生新的中断,则必须用指令STI开中断,将标志寄存器中的IF标志置1,以允许响应高级的中断源的中断请求,实现中断嵌套。,中断嵌套示意图如下所示,9.3.6 中断指令,1.中断指令INT 格式:INT n 功能:转到并执行相应中断处理程序,n是中断类型号范围 0 0FFH。执行该指令过程中,先进行现场保护,再执行相应的中断处理程序。,如执行中断指令 INT 11H 后完成以下的相应动作:,(1)取出中断类型号11H;(2)标志寄存器(FLAGS)、CS、IP内容依次进栈;(3)置IF=0,TF=0;(4)从中断向
16、量表中取中断处理程序的入口地址11H*4=44H的字内容送IP寄存器,取11H*4+2=46H的字内容送CS寄存器。(5)执行相应的中断处理程序。,格式:IRET 功能:从中断服务程序返回主程序,保证被中断的 程序接着中断前的状态继续向下进行。主要是自动恢 复断点和标志寄存器的内容。需要注意的是:中断返回指令IRET能自动恢复断 点和标志寄存器的内容,而子程序返回指令不能恢复标志寄存器的内容。,2.中断返回指令IRET,9.4 中断处理程序的设计,中断处理程序的基本结构设置和获取中断向量中断设计程序举例,9.4.1 中断处理程序的基本结构,中断处理程序的基本结构是:入口地址:其结构为中断处理程
17、序过程名 PROC 属性;现场保护:中断处理程序中要重新赋值的寄存器的原有内容都必须进行保护,保护的一般方法是压栈;处理中断;恢复现场:依次恢复被保护寄存器的原有内容;中断返回:用IRET实现中断返回。需要注意的是,外设中断处理程序和软中断处理程序是有区别的。在开中断(IF=1)的情况下,外设中断是随机发生的,而软中断是在CPU执行了中断指令后发生的,所以其对应的中断处理程序的基本结构也有所不同。,中断处理程序基本结构的一般程序如下:,INTRS PROC FAR PUSH DS;现场保护 PUSH AX PUSH DX PUSH DI STI;开中断 CLI;关中断 MOV AL,20H,O
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 输入输出 中断 程序设计
链接地址:https://www.31ppt.com/p-5659679.html