【教学课件】第9章输入输出和中断程序设计.ppt
《【教学课件】第9章输入输出和中断程序设计.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第9章输入输出和中断程序设计.ppt(73页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计第第9 9章章 输入输出和中断程序设计输入输出和中断程序设计IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计基本内容基本内容基本内容基本内容输入输出指令输入输出指令查询传送方式查询传送方式中断概述中断概述中断处理程序设计中断处理程序设计BIOSBIOS功能调用功能调用IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.1 9.1 输入输出指令输入输出指令I/OI/O端口地址的
2、分配端口地址的分配I/OI/O指令指令数据传送方式数据传送方式IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.1.1 I/O9.1.1 I/O端口地址的分配端口地址的分配 计算机系统通过接口与外围设备通信的,每个接口由一组寄存器组成,为了存取这些寄存器中的数据,系统为这些寄存器分配有专门的地址,即I/O端口地址。在80X86微机中,I/O端口地址是一个连续的独立的地址空间,范围从0000H FFFFH,共64KB,因此允许设置64K个8位端口或32K个16位端口.但实际中,由于系统的外围设备数量有限,只使用这些I/O端口地址的很小一
3、部分。下表列出80X86微机的常见外设的I/O端口地址。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计I/OI/O地址范围地址范围功能功能I/OI/O地址范围地址范围功能功能00H 0FH8237A(DMA控制器)2F8H 2FEH2号串行口20H-3FH8259A(可编程控 制器)320H 324H硬盘适配器93H 9FH DMA控制器372H-377H软盘适配器C0H 0EHDMA接口378H 37AH2号并行口F0H FFH协处理器3BCH 3BEH1号并行口170H-1F7H硬盘控制器 3C0H 3CFHEGA/VGA视频寄存
4、器200H 20FH游戏控制接口3F0H 3F7H软盘控制寄存器278H 27AH3号并行口3F8H 3FEH1号串行口 部分部分I/OI/O端口地址分配情况端口地址分配情况IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.1.2 9.1.2 I/OI/O指令指令 对于I/O设备与内存独立编址的系统,有专门的I/O指令实现I/O设备与系统的通信,存取端口寄存器,完成输入输出.输入指令输入指令 输出指令输出指令IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计输入指令输入指令输入指
5、令输入指令 输入指令从一个输入端口读取一个字或字节,传送至寄存器AL或AX中,有直接寻址和间接寻址 两种方式,直接寻址方式的端口地址是一个范围 0 255的立即数.间接寻址方式的端口地址在DX 寄存器中,地址范围0-65535。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 例:例:例:例:下面两条指令分别表示从端口下面两条指令分别表示从端口2626H H读取一个字和读取一个字和一个字节。一个字节。IN AX,26HIN AX,26H IN AL,26H IN AL,26H 当端口地址超过255时,必须采用后两种间接寻址方式.例:例:
6、下面两条表示分别从端口2FAH和2FBH输入一个字节 送AL和AH.MOV DX,2FAH IN AX,DXIBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计输出指令输出指令输出指令输出指令 输出指令将AL中的一个字节或AX中的一个字输出 到指定端口,有直接寻址和间接寻址两种方式。直接寻 址方式的端口地址是0 255之间的立即数;间接寻址方式的端口地址(范围0 65535)放在DX中。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计例:例:例:例:OUT 8,AXOUT 8,AX表
7、示从表示从AXAX寄存器输出一个字到寄存器输出一个字到8 8号端口。号端口。例:例:MOV AX,6F24H MOV DX,2FDH OUT DX,AX表示将24H输出至端口2FDH,将6FH输出至端口2FEH。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.1.3 9.1.3 数据传送方式数据传送方式无条件传送方式无条件传送方式 查询方式查询方式 中断方式中断方式 直接存储器存取(直接存储器存取(DMADMA)方式方式IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计无条件传
8、送方式无条件传送方式无条件传送方式无条件传送方式 微机系统中,有些简单的I/O设备在工作时,随时都准备好向CPU传送数据或准备好接收CPU的输出数据。也就是说,在工作中,系统不需要查询这些设备的状态,可以直接使用指令IN或OUT实现数据交换。这种方式实现简单,但在CPU与这些设备交换数据时,数据交换与指令的执行必须同步,否则就可能出错。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计查询方式查询方式查询方式查询方式 查询方式适用于与CPU不同 步的I/O设备。查询方式的工作过程是:查询方式的工作过程是:如CPU要从 I/O设备接收数据,
9、先查询I/O设备状态,看数据是否准备好,如果没有准备好则继续查询;如数据已准备好,CPU就从该设备读取数据,之后,CPU向该I/O设备发送响应信号,表示数据已被接收。I/O设备在收到响应信号后,开始准备下一个数据的准备。YNN准备好输入或输出数据输入输出结束开始读设备状态信息IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计中断方式中断方式中断方式中断方式 用中断方式传送数据,可提高CPU效率,并 对一些状态进行实时响应。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计直接存储器存
10、取方式直接存储器存取方式直接存储器存取方式直接存储器存取方式 直接存储器存取方式适用于高速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控制器通过HOLD撤消对CPU的 DMA请求。IBMPC80X86汇编语言程序设计冶金工业出
11、版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.2 9.2 查询传送方式查询传送方式 查询方式的基本思想是查询方式的基本思想是:CPU主动地通过输入输出 指令查询指定I/O设备的当前状态,若设备准备就绪,则 立即与设备进行数据交换,否则循环查询。因此,查询传送方式要求相应的I/O接口除了要有数 据寄存器外,还要有状态寄存器,有些I/O设备还要有控 制寄存器。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.3 9.3 中断概述中断概述中断的概念中断的概念中断源及中断分类中断源及中断分类中断向量表中断向量表中断响应过程中
12、断响应过程中断优先级和中断嵌套中断优先级和中断嵌套中断指令中断指令IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.3.1 9.3.1 中断的概念中断的概念 中断是一种使CPU中止正在执行的程序而转去处理 特殊事件的操作。具体说就是在CPU执行程序的过程中,需要对外设进行输入输出操作,或由于某种事件发生,强迫CPU暂停当前执行的程序,转去执行输入输出操作 或对该事件进行处理,当完成输入输出操作或处理事件 结束,CPU又返回到原来的程序,接着中止前的状态继 续执行。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和
13、中断程序设计输入输出和中断程序设计9.3.2 9.3.2 中断源及中断分类中断源及中断分类 引起中断的事件就称为中断源。中断可分为内部中断和外部中断。内部中断内部中断又称软件中断。内部中断的中断事件是 由系统内部产生的,如CPU运算时,商超出寄存器所表 示的范围,或程序中有软件中断指令等都是内部中断。外部中断外部中断又称为硬件中断。外部中断是由外设控 制器等外部条件产生的中断,如某些设备出现故障,某 些I/O设备请求输入输出数据等.均可产生中断。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计内部中断内部中断内部中断内部中断 主要有以下
14、主要有以下5 5种种 (1)除法错中断除法错中断 在执行除法指令时,如果商超过了寄存器所能表示的范围或除数为0,则立即产生一个类型为0的中断。(2)溢出中断溢出中断 CPU在进行算术运算时,如发生溢出,则将溢出标志OF置1,此时指令INTO中断发生溢出的算术操作,其中断类型号为4;如果OF为0,INTO指令不产生中断。(3)指令指令INTINT产生的中断产生的中断 可以用INT n指令产生内部中断,CPU执行此指令时,立即产生中断,根据中断类型号n调用系统中相应的中断处理程序。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 (4)单步
15、中断单步中断 单步中断是为程序调试设置的.CPU每执行完一条 指令都要检测陷阱状态标志TF,如果TF为1,CPU产生类 型号为1的中断,即单步中断.单步中断使CPU一次执行一条指令,程序调试过程 中,通过单步中断可以看出每条指令执行后,寄存器和 存储单元的变化。(5)断点中断断点中断 断点中断也是为程序调试设置的。调试程序时,可 以根据功能不同将程序分为几个程序段,每段设置一 个断点,CPU执行到断点时产生类型为3的中断。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计外部中断外部中断外部中断外部中断 外部中断包括非屏蔽中断NMI和可屏
16、蔽中断INTR。非屏蔽中断非屏蔽中断不受中断标志位IF的影响,CPU不能禁 止非屏蔽中断.当NMI请求发生,CPU在一条指令执行结 束后,将对它作出响应。非屏蔽中断主要用于一些紧急 故障处理,如电源掉电、内存的奇偶错等。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 可屏蔽中断可屏蔽中断可屏蔽中断可屏蔽中断常用于外设的中断处理,这些设备通过可常用于外设的中断处理,这些设备通过可编程中断控制器编程中断控制器82598259A A与与CPUCPU相连,可编程中断控制器相连,可编程中断控制器82598259A A通过中断请求输入端接收外设的
17、中断请求信号,并将相应通过中断请求输入端接收外设的中断请求信号,并将相应的中断类型号提供给的中断类型号提供给CPUCPU。CPUCPU是否响是否响应应外外设设的中断的中断请请求取决于两个条件:一是外求取决于两个条件:一是外设设的中断的中断请请求是否被屏蔽;二是求是否被屏蔽;二是CPUCPU是否被允是否被允许许响响应应中断。中断。其中第一个条件是由可屏蔽中断控制器其中第一个条件是由可屏蔽中断控制器82598259A A的中断屏蔽寄的中断屏蔽寄存器(如存器(如下下图图)控制的,中断屏蔽寄存器的端口地址)控制的,中断屏蔽寄存器的端口地址为为2121H H,它的某位它的某位为为0 0,则则表示允表示允
18、许该许该位位对应对应的外的外设设的中断的中断请请求求。第二个条件是由第二个条件是由标标志寄存器的中断志寄存器的中断标标志位志位IFIF控制的,控制的,该该位位为为1 1,允,允许许CPUCPU响响应应外外设设的中断的中断请请求,即求,即处处于开中断状于开中断状态态。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 用OUT指令设置中断屏蔽寄存器;用STI(IF=1)指令和CLI(IF=0)指令对中断标志位IF进行设置和清除。打印机软盘硬盘串行口2定时器键盘保留串行口1D7D6D5D4D3D2D1D0 中断屏蔽寄存器IBMPC80X86汇
19、编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.3.3 9.3.3 中断向量表中断向量表 每个中断源对应一个中断处理程序,每个中断处 理程序对应着一个中断类型号,80X86中断系统可处理 256种类型的中断,对应的类型号为0 0FFH。为处理方便,把所有256种中断处理程序的入口地址都集中放在一起,形成一张表,即中断向量表(如下图)。中断向量表中的每一项占用4个字节,其中高地址的两个字节存放中断处理程序的段地址,低地址的两个字节存放中断处理程序的偏移地址。中断向量表所占空间为1K(256*4)字节,系统将存储器的地址范围从0000H 3FFH的1K字节用
20、来建立中断向量表,顺序存放256个中断向量。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 类型0FF中断处理程序入口地址 类型3中断处理程序入口地址 类型2中断处理程序入口地址 类型1中断处理程序入口地址 类型0中断处理程序入口地址 中断向量表中断向量表003FCH0000CH00008H00004H00000HIBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.3.4 9.3.4 中断响应过程中断响应过程 当中断发生时,硬件完成以下操作:(1)取中断类型号n;(2)将标志寄
21、存器内容压栈;(3)当前代码段寄存器(CS)内容和指令计数器(IP)内容入栈;(4)置标志位IF和TF为0,禁止外部中断和单步中断(5)从中断向量表中取4*n地址(16位)的内容送IP,取4*n+2地址(16位)的内容送CS;(6)执行中断处理程序。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.3.5 9.3.5 中断优先级和中断嵌套中断优先级和中断嵌套 中断优先级中断优先级指多个中断源同时向CPU请求中断时,CPU响应中断的优先顺序。80X86系统为各种中断源规定了一个中断优先级次序,当多个中断源同时申请中断时,CPU按从优先级
22、高到优先级低的顺序依次处理各中断源的中断请求。中断优先级中断优先级IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 80 80X86X86系统的中断优先级次序是:优先级高 内部中断(除单步中断、断点中断外)非屏蔽中断 可屏蔽中断 低 单步中断 其中可屏蔽中断的优先级又分为IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7等8级,IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7即为正常的优先级方式下的优先级次序。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序
23、设计 各外设的中断优先权对应哪一级由硬件连线和可编 程中断控制器8259A的中断命令寄存器(下页图)决定。中断命令寄存器中的端口地址为20H,其中D7位(R)为优先级循环控制位,R=1为循环优先级;R=0为固定优 先级。D0 D2位(L0 L2)为系统最低优先级编码,用这三位指定哪个中断请求的优先级最低。D5位(L5)是中断结束位,当EOI位为1时,当前正在处理的中断请求将被清除。D6位(SL)用于选择L2、L1、L0编码。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计RSLEOI00L2L1L0D7 D6 D5 D4 D3 D2 D
24、1 D0中断命令寄存器 如要使中断优先级依次循环到IR6为最低优先级,即优先级优先级顺序为:IR7 IR0IR1 IR2 IR3 IR4 IR5 IR6,则需送命令码11100110到端口20H。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计 中断嵌套中断嵌套是指正在运行的中断处理程序,又被其它 中断源中断。中断嵌套中断嵌套 从中断的响应过程知道,当CPU响应一个中断时,总是自动将IF和TF位置0,即先关中断,禁止任何外设新的中断请求。为了实现多级中断处理,允许在中断处理程序执行过程中发生新的中断,则必须用指令STI开中断,将标志寄存
25、器中的IF标志置1,以允许响应高级的中断源的中断请求,实现中断嵌套。IBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计中断嵌套示意图如下所示中断嵌套示意图如下所示INT3处理程序INT3INT1处理程序INT1STIIRETIRETIBMPC80X86汇编语言程序设计冶金工业出版社第第9章章 输入输出和中断程序设计输入输出和中断程序设计9.3.6 9.3.6 中断指令中断指令1.1.中断指令中断指令INTINT 格式:INT n 功能:转到并执行相应中断处理程序,n是中断类型号范围 0 0FFH。执行该指令过程中,先进行现场保护,再执行相
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 输入输出 中断 程序设计
限制150内