7.3 程序中断方式.doc_第1页
7.3 程序中断方式.doc_第2页
7.3 程序中断方式.doc_第3页
7.3 程序中断方式.doc_第4页
7.3 程序中断方式.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7.3 中断控制技术 7.3.1 中断的基本概念 一、数据传送控制方式 1.查询方式 CPU随时询问接口数据传送完毕或数据准备情况。在查询方式下,CPU完成下列操作: CPU向接口发出传送命令、输入/输出数据命令。 CPU查询接口状态,数据发送是否完毕或输入数据是否准备好。 如接口状态允许发送,则CPU向接口发送数据;如输入数据准备好,则CPU取回数据。 2.中断方式 中断方式,CPU不用定时查询接口状态,而是由接口逻辑在数据发送完毕或接收数据准备好时通知CPU,CPU则暂时中止当前的操作转去完成中断源的数据发送或接收数据。 3.DMA方式 DMA方式是数据不经过CPU在存储器与外设之间直接传送的操作方式,DMA适合大量的高速数据传送,如存储器与磁盘之间的数据传送。 二、什么是中断 中断-计算机的CPU正在执行主程序时,遇到各种原因使CPU暂时中止主程序的执行,转去执行或处理临时发生的事件,处理完毕再返回到被停下来的主程序处继续执行。 或: 中断-指CPU在正常运行程序时,由于内部/外部事件或由程序的预先安排引起CPU中断正在运行的程序,而转到为内部/外部事件或为预先安排的事件服务的程序中去。服务完毕,再返回去继续执行被暂时中断的程序。 三、中断的作用 有了中断技术以后主机与外设可以并行工作,从而提高主机的工作效率。同时还有如下优点: 实时处理; 分时操作; 故障处理; 实现多道程序运行,多机联接,人机对话等。 四、中断源、中断识别 中断源-引起中断的原因或发出中断请求的来源。 1.外部设备-键盘、打印机。 2.数据通道的中断源-软磁盘、硬磁盘。 3.软件设置的中断-程序中用指令产生的中断。 4.故障请求中断-电源掉电、存储器出错、运算溢出。 5.调试程序而设置的中断。 中断识别-CPU寻找中断源 1.目的:形成该中断源的中断服务程序的入口地址,以便CPU将此地址置入CS:IP寄存器,实现程序的转移。 2.CPU识别中断或获取中断服务程序入口地址的方法 向量中断-中断服务程序的入口地址是在CPU响应中断以后,发出中断回答INTA时,由中断控制器通过数据总线输送给CPU的。 查询中断-是采用软件查询技术确定发出中断请求的中断源。7.3.2 8086/80286微型计算机的中断机制 一、总体结构 INTR 中断源 8088 8259. CPU 中断. NMI 控制. 器 控制 中断源 逻辑 INTR(Interrupt Request):由8259管理的可屏蔽中断,来自与CPU相连的各个外设和数据通道。 NMI(Non Maskable Interrupt):非屏蔽中断,只要有中断请求而CPU则一定响应,一般用于紧急情况,如不及时处理则会造成严重后果的情况。 NMI的中断源: 系统板上RAM校验出错; 扩展槽连接的设备出错; 8087异常中断。 二、中断类型 IBM-PC允许有256级中断,分别叫作类型0、类型1、类型2.直到类型255中断。其中:04H-内部专用中断; 80FH-8259控制的8级硬件中断; 101FH-ROM-BIOS调用的软件中断; 20FFH-DOS中断调用和保留的中断。所有这些类型可以归纳为两类即: 1.软件中断 在执行下述指令时,将产生或可能产生中断,这些中断统称为软中断。 DIV(除)或IDIV(整除)指令-除法错(类型0H) 当执行这类除法指令时,若除数为0或溢出,则产生中断,这类中断称为0型中断。 INT指令-指令中断(含断点中断)(类型3H) 当执行中断指令INT n 时,则产生 n 型中断。 INTO 指令-溢出中断(类型4H) 若在指令序列执行过程中,使溢出标志位OF=“1”时;若接着执行的是INTO指令,则引起内部中断,这类中断称为4型中断。若溢出标志位OF=“0”则该指令不起作用。 单步执行-单步中断(类型1H) 若单步标志(即FR中的T位)TF=“1”时,则每执行一条指令后就自动产生类型 1 的中断,作为单步执行指令的调试手段。 2.硬件中断 IBM-PC/XT有两条中断请求线:非屏蔽中断NMI和可屏蔽中断INTR线;在这两条线上产生中断请求信号而引起的中断谓之硬件中断。 非屏蔽中断-NMI(类型2H) 当NMI线上出现一个由低到高的上升沿的中断请求时,不论标志位是何种状态,当前指令执行完以后CPU立即响应。 可屏蔽中断-INTR(类型80FH) 当INTR线上出现高电平中断请求信号时,若标志位I=“1”则CPU处于开中断,因而可以响应;若I=“0”则CPU不响应。“I”的状态可由指令设置。 三、中断向量表 中断向量-CPU响应中断以后,中断源提供地址信息,由地址信息对程序的执行进行导向,引导到中断服务程序中去,故把这个地址信息称为中断向量(即指中断服务程序的入口地址,或者称作中断服务程序入口点的内存地址)。 中断向量表-(中断指示表)集系统中的所有中断向量并存储在某一区域内,这个存放中断向量的存储区就称为中断向量表。 中断类型号-为了便于在中断向量表中找到中断向量(入口地址),通常设置一指针,由它指出中断向量存放在向量表的什么位置,即中断向量的地址,该指针在PC系列中由中断类型号提供。 中断向量表的组成:中断向量表是由中断类型号与该中断类型相对应的中断处理子程序入口地址之间的连接表。8088中断向量表占用内存中00000H003FFH的1KB空间,表中内容分256项,对应于0255,每一项占四个字节,存放中断服务程序入口地址。高两字节存放在段地址部分,低两字节放在段内偏移地址部分。即: 高地址字-中断服务程序所在代码段的基址; 低地址字-偏移地址。即由:CS与IP二者共同决定。 中断服务程序入口地址的形成:中断服务程序的调用时,对于任一指定类型中断,CPU只将其类型号乘以4(乘完以后需转换成16进制)就可以得到该类型的中断服务程序入口地址的最低字节地址;类型号乘4再加2则得到该类型的中断服务程序入口地址的高位字节地址。然后顺序取出这4个字节的内容分别送到IP和CS,这样就实现了对中断服务程序的调用。 中断向量表 例1.计算类型编码33外设中断服务程序 3FFH 的起始地址存放在中断向量表中的哪 类型 255 个单元? 3FCH 偏移地址的单元: 由Type4得 334=132=84H 类型 33 084H 代码段基址的单元: 类型 32 由Type42得 080H 3342=134=86H 类型 31 07FH 从而进入以CS:IP为入口的中断服务 程序。 类型 5 例2.计算中断类型号13H中断服务 014H 程序单元? 类型 4 13H4=004CH即 010H 类型 3 中断向量 00CH 类型 2 008H 004FH 00 CS 类 类型 1 004EH 70 型 004H 004DH 0F IP 编 类型 0 004CH C9 码 000H 则中断向量为0070H(CS):0FC9(IP) 由此即得中断服务程序的入口地址(即科上P11中:段寄存器内容左移4位,右边补四个0,形成20位的段起始地址;再加上16位段内偏移量从而形成20位的存储器物理地址)。 四、中断类型号的获得 1.除法错误,单步中断,NMI,断点中断和溢出中断均由微处理器内部硬件自动提供04H; 2.软件(指令)中断则是从指令流中,即在第二个字节中读得中断类型号; 3.外部中断INTR可以用两种方法获得中断类型号: 根据用户自己设计的接口电路,利用寄存器/缓冲器组件存放中断类型号。微处理器响应中断以后,接口电路则将此类型号送入数据总线,微处理器读数据总线从而获得中断类型号; 利用8259中断控制器提供。 五、中断向量的装入 例如:假设中断类型号为60H,中断服务程序的段基址是SEG-INTR,偏移地址是OFFSET-INTR(006DH),则填写中断向量的程序为: 1.用MOV指令填写中断向量表 CLI CLD MOV AX,0 MOV ES,AX MOV DI,4*60H ;中断向量指针DI MOV AX,OFFSET-INTR ;中断服务程序偏移值AX STOSW ;AXDIDI+1中,然后DI+2 MOV AX,SEG-INTR ;中断服务程序的段基址AX STOSW ;AXDI+2DI+3 STI 2.将中断服务程序的入口地址直接写入中断向量表 MOV AX,00H MOV ES,AX MOV BX,60H*4 ;中断号*4BX MOV AX,006DH ;中断服务程序偏移地址 MOV ES:BX,AX ;装入偏移值 PUSH CS POP AX ;中断服务程序段基址 MOV ES:BX+2,AX ;装入段基址 3.采用DOS功能调用“INT 21H”中的 AH=25H 来装入中断向量 MOV AX,N ;中断号 MOV AH,25H ;设置中断向量 MOV DX,SEG-INTR MOV DS,DX ;DX指向中断程序段址 MOV DX,OFFSET-INTR ;DX指向中断程序偏移量 INT 21H 六、中断过程 一个完整的中断过程需要以下五步: 1.中断源引起中断请求 外部由硬件产生中断请求信号; 内部由指令设置。 2.中断优先级排队 当系统有多个中断源时,同时可能有几个中断源同时提出请求,CPU要根据各自的轻重缓急进行优先级排队,响应优先级最高的请求。 3.中断响应 外部: 在可屏蔽情况下,IF(CPU内部标志寄存器的中断允许位)为“0”( 可 中断允许被封闭),CPU检测不到外部中断请求即 屏 中断被屏蔽。 蔽 在非屏蔽情况下,IF(标志寄存器的中断允许位)为“1”(中断允许 中 被打开),CPU可以接受外部的中断请求,转入中 断 断周期。 IF的打开用STI指令,IF的关闭用CLI指令。 内部:直接转入中断周期。 其中不可屏蔽中断有以下情况需注意: NMI-表示:8087出现异常; 不 系统板上DRAM奇校验出错;外部控制电路输出 可 扩充板上DRAM奇校验出错。 屏 蔽 一个NMI的信号送到一个与门电路,经该门电路送至CPU的NMI端 中 ;该控制门是否打开又受一个叫做 NMI 触发器 IF 的输出控制 断 ,如果向I/O地址A0H写80H则打开该触发器,若写00则复位 NMI 触发器即关闭与门使NMI信号无法送到CPU的NMI端。 中断周期: 在CPU接受到中断或异常请求时,其内部硬件自动执行预定操作,其操作过程如下: 把标志寄存器 F 和 CS、IP(断点)推入堆栈保存; 清除自陷(单步中断)标志位TF(单步中断),中断允许标志位IF; CPU从内部或外部获取中断类型码,根据中断向量表把该类型代码内容装入IP、CS而转到中断服务程序的入口地址-进行中断处理。 4.中断服务 保护现场,保护断点; FR(状态寄存器)的内容压入堆栈; 主程序断点处的CS,IP压入堆栈; 中断处理-执行中断服务程序。 5.中断返回。 恢复断点和恢复现场 IP、CS出栈; FR的内容出栈。7.3.3 8259A可编程中断控制器 一、8259的功能 1.能管理8级中断源,根据需要决定各个中断源的优先级工作方式。 2.自动送出中断类型号。 3.可以屏蔽任一指定的中断源。 4.级联工作,可以使中断源最大可能扩大至64个。 5.可以实现中断的完全嵌套。 二、8259的结构与相关的引脚 8259的结构见教材P60 F3-10 根据该结构,以中线为界: 左部分-联络部分 右部分-控制部分 1.控制部分 IR0IR7:八个中断请求输入(外设来),一般IR0优先级最高,IR7最低。 外设的请求信号有两种触发方式: 电平(高电平)触发,保持时间直到中断被响应以后。 沿(上升沿)触发,高电平保持到中断被响应以后。 INT(Interrupt):中断请求输出。 8259接受中断请求以后: 对各中断进行优先级排队,若中断请求是唯一的;或比当前正在服务的优先级别高;或当前的中断服务结束。则8259向CPU发出INT信号。 INTA(Interrupt Acknowledge):响应信号 CPU对INT信号的应答信号。 IRR(Interrupt request Register):中断请求寄存器。 IRR是一个8位寄存器,其07位分别对应于IR0IR7,当IR0IR7中某一级有中断请求时,则IRR相应的位置“1”。 ISR(Interrupt Serve Register):正在服务寄存器 ISR用于保存正在被服务中断请求的情况,它具有与外部中断级同样数量的位,当某个中断级正在被服务时,寄存器的相应位置“1”。 IMR(Interrupt Maskable Register):中断屏蔽寄存器。 IMR是一个8位寄存器,与IRR位相对应。当某中断级需要屏蔽时,则相应位被置“1”。 优先权判决电路 根据IRR寄存器被置“1”位的优先级,选出优先级别最高的位,在INTA信号到来时,选通送入ISR寄存器。 控制逻辑 控制逻辑控制该部件的全部工作。 只要IRR寄存器中有未被屏蔽的中断请求位时,控制逻辑则输出高电平的INT信号,向CPU提出中断请求,CPU响应后,允许ISR相应位置“1”。同时发出相应的中断向量送到数据总线。 2.与CPU的联络部分 数据总线缓冲器 该部件把8259与系统数据总线相连,传送命令控制字、状态字和中断向量。 R/W逻辑 接受CPU的命令:包括初始化命令字和操作命令字;CPU读取8259时:它控制相应的寄存器内容(IRR、ISR、IMR)输出到数据总线上。 -CS、A0和-WR一组:控制初始化命令字、操作命令字写入8259。 -CS、A0和-RD一组:控制读出IRR、ISR、IMR中的内容。 级联缓冲器/比较器 这部分用作级联使用,其级联结构如下:(参湖北PC/XT硬件原理P123 CAS0CAS2: 级联时,用一片8259作主片,用18片作从片。 主片的CAS0CAS2与从片的CAS0CAS2相连作级联总线。 中断过程中:主片的CAS0CAS2作输出,在第一个-INTA脉冲结束时,把被响应的中断请求从片的编码送入CAS0CAS2总线。从片的CAS0CAS2作输入,各从片把主片由CAS0CAS2输出的编码与自己的编码进行比较,若相同,表明本从片被选中,于是在第二个-INTA脉冲期间把中断向量送入数据总线供CPU读取。 -SP/-EN: -SP/-EN是一个双向信号线。 -SP/-EN作输出时:用作允许缓冲器接收或发送(8259与CPU间)的控制信号。 -SP/-EN作输入时:用于表示该8259是作主设备还是作从设备。 该8259作主设备时:-SP=“1”。 该8259作从设备时:-SP=“0”。 三、中断响应过程 1.当一条或几条中断请求线IR0IR7都变成为高电平时,则使IRR寄存器的相应位置“1”。 条件:电平触发或上升沿触发,可由软件设置。 2.8259接受中断请求以后,对各请求进行优先级比较,如果中断请求是唯一的;或比当前正在处理的优先级别高;或虽然优先级别低,但目前的中断服务结束。则8259就向CPU发出INT的高电平信号,请求中断服务。 3.CPU 在每个指令的最后一个时钟周期检查 INTR 输入端的状态,同时当IF=“1”(标志寄存器里的中断允许位I)且无其他高优先级(如NMI)的中断请求时,则响应该中断请求,CPU进入两个中断响应(-INTA)周期。 4.8259接到来自CPU的第一个-INTA脉冲时,将ISR中当前优先级最高的中断请求相对应的位置“1”,对IRR中的相应位清零。 当8259在收到第二个 -INTA信号时,则向数据总线发送单字节的中断向量,供CPU读取,以便形成中断服务程序的入口地址。 其中:高5位由编程确定,低3位是IR0IR7的编码。 5.8259在AEOI(自动结束中断)工作方式时,在第二个-INTA结束时对ISR复位;在EOI工作方式时,中断服务结束发EOI复位命令对ISR复位。 四、8259的编程应用 8259根据接收到的CPU命令进行工作,CPU的命令分为两类: 初始化命令:确定8259最基本的工作状态(ICW)。 操作命令:控制操作方式的命令(OCW)。 1.8259的初始化命令字(ICW) 8259初始化命令字有四个: ICW1 初始化必须写的两个且先写ICW1后写ICW2. ICW2 ICW3 在级联时写,否则不用写. ICW4 由ICW1中的IC4决定是否写入ICW4. 初始化命令字1-ICW1 条件:-CS=“0”. -WR=“0”. A0=“0” 表示是对ICW1命令字. D4=“1” 其中:A0=“0”即表示ICW/OCW写到偶地址端口; “1”即表示ICW/OCW写到奇地址端口。 A0 D7 D6 D5 D4 D3 D2 D1 D0 0 A7 A6 A5 1 LTIM ADISNGL IC4 各位定义如下: D0(IC4):表示有无ICW4初始化命令字. D0=“1”-写ICW4(PC机设定有). D0=“0”-不写ICW4. D1(SNGL):决定单级或级联方式工作,同时决定ICW4写入否. D1=“1”-单级工作. D1=“0”-级联工作. D2(ADI):8088中不用,IBM-PC将其置“0”. D3(LYIM):中断请求的触发方式. D3=“1”-表示电平触发. D3=“0”-表示上升沿触发. D4:该位是ICW1的标志位,D4=“1”表示该命令字是ICW1. D5D7:IBM-PC中没用,通常置“0”. IBM-PC/XT设定初始化命令字ICW1为 13H. 初始化命令字2-ICW2(参考北航P244) 条件:紧跟ICW1. A0=“1”. A0 D7 D6 D5 D4 D3 D2 D1 D0 1 A15/T7A14/T6A13/T5A12/T4A12/T3A10 A9A8 各位定义如下: D7D3:该几位给出中断向量的高5位类型码,用来确定中断向量指针表在PC低地址内存储器中的位置。 D2D0:该三位取决于IR0IR7的编码,CPU在读取中断类型号之前,由 8259 自动地填入。 IBM-PC/XT 中 D2D0 置为“0”。 外部硬件中断源的中断类型号由两部分组成,即高五位(ICW2)+低三位(IRi的编码)组成。其中,低三位由硬件自动生成。 IBM-PC/XT与IBM-PC/AT的硬件中断源的中断号如下:(表参新华中接口P92) IBM-PC/XT IBM-PC/AT 中断源 中断号高五位低三位中断号中 断 源中断号高五位低三位中断号 时 钟 08H IR0(0) 08H 实时钟 070H IR0(0) 70H 键 盘 08H IR1(1) 09H 改向INTOA 070H IR1(1) 71H 保 留 08H IR2(2) 0AH 保 留 070H IR2(2) 72H RS232(1) 08H IR3(3) 0BH 保 留 070H IR3(3) 73H RS232(2) 08H IR4(4) 0CH 协处理器 070H IR4(4) 74H 硬 盘 08H IR5(5) 0DH 保 留 070H IR5(5) 75H 软 盘 08H IR6(6) 0EH 硬 盘 070H IR6(6) 76H 打 印 机 08H IR7(7) 0FH 保 留 070H IR7(7) 77H 即: 高 5 位 IRi编码 高 5 位 IRi编码 0 1 0 0 0 0 0 0 08H 0 1 1 1 0 0 0 0 70H 0 0 1 09H 0 0 1 71H 1 1 1 0FH 1 1 1 77H 初始化命令字3-ICW3 条件:SNGL=“0”(级联方式,否则该命令字就不用写). A0=“1”. A0 D7 D6 D5 D4 D3 D2 D1 D0 1 S7 S6 S5 S4 S3 S2 S1 S0 8259作主控时: 其中D0(S0)D7(S7):为从设备标记,相应位为“1”时,表示对应的IR输入端接有从设备8259,为“0”时则表示没有接从设备. 8259作从控时: 从设备的ICW3格式如下: A0 D7 D6 D5 D4 D3 D2 D1 D0 1 ID2 ID1 ID0 D2D0:从设备标志ID的二进制代码,它等于从设备8259的INT端所接的主设备IR的编码,即:从片的INT端接到主片的哪个IR?端。从设备标志如下表所示: 从设备标志 ID2 ID1 ID0 从设备标志ID 0 0 0 0 0 0 1 1 0 1 0 2 0 1 1 3 1 0 0 4 1 0 1 5 1 1 0 6 1 1 1 7 初始化命令字4-ICW4 条件:IC4=“1”. A0=“1”. A0 D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 0 SFNMBUF M/SAEOIPM 各位定义如下: D0(PM):CPU类型选择. IBM-PC该置“1”. D1(AEOI):选择是否为自动中断结束. D1=“0”-非自动中断结束. D1=“1”-自动中断结束(AEOI方式). D2(M/S):主/从. D3(BUF)=“1”时:D2=“0”,按从设备工作. D2=“1”,按主设备工作. D3(BUF):8259是否工作 在缓冲方式. D3=“1”时:8259工作于缓冲方式,-SP/-EN用作允许缓冲器接收/ 发送的输出控制信号-EN. D3=“0”时:8259不工作于缓冲方式,-SP/-EN用作主设备/从设备选择的输入控制信号-SP. D4(SFNM):特殊全嵌套的选择 D4=“1”时,特殊的全嵌套方式. D7D5:没用. 2.8259的操作命令字(OCW) 在写完初始化命令字以后,8259中断输入端就可以接收中断请求信号了。在8259工作期间,可通过操作命令字(OCW)来使它按不同的方式进行工作,操作命令字有三个,即OCW1、OCW2、OCW3,它们用来对中断请求屏蔽、优先权控制、中断结束等施行动态管理。 操作命令字1-OCW1 OCW1用于设置8259的屏蔽操作,即写中断屏蔽寄存器IMR. WOCW1的条件: -CS=“0”. -WR=“0”. A0=“1”. A0 D7 D6 D5 D4 D3 D2 D1 D0 1 M7 M6 M5 M4 M3 M2 M1 M0 M7M0代表8个屏蔽位,用于控制IR7IR0的请求信号。 若Mi=“1”.表示相应的那路被屏蔽. 若Mi=“0”.表示相应的那路中断允许使用. 操作命令字2-OCW2 OCW2用于控制中断结束、优先权循环. WOCW2的条件: -CS=“0”. -WR=“0”. A0=“0”. D3、D4=“0”. A0 D7 D6 D5 D4 D3 D2 D1 D0 0 R SL EOI 0 0 L2 L1 L0 各位的定义如下: D7(R):优先权控制位. D7=“1”时:为循环优先权. D7=“0”时:为固定优先权. D6(SL):决定OCW2中的L2L0是否有效. D6=“1”时:L2L0有效. D6=“0”时:L2L0无效. D5(EOI):中断结束命令位. D5=“1”时:使当前中断服务寄存器中的对应位ISn复位。即ICW4中 的AEOI=“0”时,用该命令对ISn复位。EOI命令就是 通过OCW2中的第五位即EOI位设置的,其中:ISn位由 L2L0的编码指定。 D5=“0”时:则工作在AEOI命令方式。 D4、D3=“0”为特征位. 组合命令 R、SL、EOI组成组合命令如下: OCW2控制格式 R SL EOI 功 能 0 0 1 一般的EOI命令 0 1 1 特殊的EOI命令 1 0 1 循环优先

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论