




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.8 中断和8259芯片8.1 概述中断是一个过程,这个过程一般由微处理器外部或内部硬件引起的。CPU在执行程序的过程中被内部或外部事件所打断,CPU暂时中止现行程序的执行,转而去执行预先安排好的程序,即中断数服务程序(ISR),待处理完毕后又回到原先的断点继续执行原来的程序。中断请求的实现要由软件来实现,编写软件需要了解硬件是如何工作的。在计算机系统中,凡是能引起中断的事件被称为中断源,即中断的来源。通常中断源有以下几种:l 一般的I/O设备,如打印机l 数据通道中断源,如磁盘l 实时时钟l 故障源,如电源故障,存储出错l 软件中断为了满足各种情况的要求,中断系统应具备以下的功能:l 实现中
2、断响应、中断服务及返回l 实现中断优先权排队l 实现中断嵌套中断一般是随机发生的,因而中断涉及的基本问题很多,如:l CPU何时检测中断请求信号l CPU如何响应中断请求l CPU如何识别中断源l CPU如何转去执行中断服务程序,如何从中断服务程序返回l 如何实现中断优先排队,如何处理多重中断l 如何管理中断中断优先权(priority)是指系统设计者事先根据事件的轻重缓急,给每个中断源确定的优先服务的级别。系统根据中断优先权的高低确定优先为哪个中断服务。8.1.1 中断源的识别中断源的识别可以通过向量中断或中断查询等方法来实现。8.1.1.1 中断查询或称查询中断查询中断和查询传送方式是有本
3、质区别的:查询传送方式需要CPU花费很多时间不断地循环询问接口电路,以等待设备的就序信号。查询中断是一种由中断启动而不是由微处理器启动的查询方法。查询方法的接口电路xor al, al;CF = 0mov dx, 340hin al, dx;读如中断寄存器状态rcr al, 1jc serv_a;若有外设A的请求,则转A中断服务程序rcr al, 1jc serv_b;若有外设B的请求,则转B中断服务程序8.1.1.2 向量中断Vectored Interrupt该方法对中断源的识别最快。CPU响应中断时,通过中断响应信号选通中断接口,中断接口将中断向量号送至数据总线,CPU根据中断向量号获知
4、中断服务程序的入口地址。8.1.2 中断优先级排队硬件优先级排队8.1.2.1 菊花链优先级排队8.1.2.2 优先级编码电路由8:3优先级编码器、优先级寄存器、3位数字比较器组成的一种中断优先级排队电路。(编码器、译码器、比较器参见数字电路的组合逻辑)优先级寄存器的内容可以由用户设定,其中一位为禁止位,优先级寄存器保留着正在进行的中断服务的编码。设:优先级最低的线通过编码器后的编码为000B,最高的线编码为111B如果CPU当前正在进行一个中断服务,则优先级寄存器输出低电平,寄存器保留着正在服务的中断编码。如果CPU当前没有进行一个中断服务,则优先级寄存器输出高电平。8.1.2.3 采用专用
5、的中断优先级管理芯片采用专门的可编程芯片来完成中断优先级的管理,如Intel 8259A。8.1.3 中断嵌套中断嵌套是指在中断过程中,CPU又收到优先级更高的中断请求,若条件满足CPU将暂停当前的中断服务,转去为更高优先级的中断服务,待返回后再继续执行被打断的中断服务程序,形成嵌套的中断。硬件中断优先级排队方案在软件的配合下都可以方便地实现中断嵌套。软件查询中断优先级排队方法只要编写相应的处理程序段也可以实现中断嵌套,但程序相对复杂、费时,一般不采用。8.1.4 中断处理CPU响应了中断就转入中断服务程序中,在ISR中要做如下工作:l 保护现场CPU响应中断时自动保护了CS、IP和Flag寄
6、存器,在中断服务程序中会用到另一些寄存器,为了保证中断返回后主程序正确继续执行,必须把这些寄存器压入堆栈保护起来,称为保护现场。l 如允许中断被嵌套需打开中断CPU在响应中断时已自动关闭中断(IF=0)不允许其他的中断来打断他。如果允许比他优先级更高的中断来打断,则需要用STI指令打开中断。l 中断服务这是ISR的核心,即完成外部设备要求CPU完成的工作。l 恢复现场在中断返回前要把保护现场压入堆栈的寄存器的内容恢复为先前的值。需要注意的是出栈的顺序与入栈的顺序相反。l 中断返回中断服务程序的最后一条指令是IRET。执行IRET指令,CPU自动从堆栈中弹出Flag、IP和CS,返回主程序继续执
7、行。8.2 8088/86中断系统Intel 8088/86具有一个简单而灵活的中断系统,采用向量中断机制,能处理256个中断,用中断向量号0255来区别,可用软件也可用硬件来启动中断。中断源可来自内部,也可来自外围芯片。8.2.1 中断类型8.2.1.1 内部中断内部中断是通过软件调用的非屏蔽中断,是CPU根据软件中的某条指令或者软件对标志寄存器中某些标志的设置而产生的。8.2.1.1.1 除法错中断在执行除法指令时,若除数为0或商超过寄存器所能表示的范围,则立即产生一个向量号为0的内部中断,称为除法错中断。8.2.1.1.2 溢出中断若上一条会使溢出标志(OF)置1,那么执行INTO指令时
8、立即产生一个向量号为4的中断。若溢出标志(OF)为0,则INTO指令不起作用。8.2.1.1.3 单步中断若单步标志(TF)为1,则在每条指令执行结束后,CPU自动产生一个向量号为1的中断,使程序单步执行,为用户提供调试手段。8088/86的指令系统中并没有一条设置TF的指令,那么,如何设置TF呢?pushfpop axor ax, 0100h;Bit8=1, TF=1push axpopf;TF置1, 其他标志不变8.2.1.1.4 指令中断INT中断指令格式:INT n操作:(SP)(SP)-2(SP)+1):(SP)FLAGS(IF)0(TF)0(SP)(SP)-2(SP)+1):(SP
9、)(CS)(CS)(n x 4 + 2)(SP)(SP)-2(SP)+1):(SP)(IP)(IP)(n x 4)8.2.1.2 外部中断通过外部的硬件产生的中断,也称硬件中断。8.2.1.2.1 非屏蔽中断通过CPU的NMI(Non-Maskable Interrupt)引脚向CPU提出的中断请求。CPU在当前指令执行结束后予以响应,其中断号为2。主要用于处理系统的意外或故障,如:l 电源掉电l 存储器读写错误l 协处理器异常l 非屏蔽中断不受IF的屏蔽,整个系统中只能有一个该种中断。8.2.1.2.2 可屏蔽中断通过CPU的INTR引脚向CPU提出的中断请求。当IF为1时,在当前指令结束后
10、CPU予以响应,同时输出可屏蔽中断响应信号-INTA。若IF为0,则可屏蔽中断被禁止,称之为关中断。要使CPU处于开中断的状态,需要使用开中断指令:STI,使IF=1。要使CPU处于关中断的状态,需要使用关中断指令:CLI,使IF=0。关中断的情况有:l 系统复位后l 任何一个中断(内部的或外部的)被响应后l 执行关中断指令STI后8.2.2 中断向量和中断向量表Interrupt Vector, Interrupt Vector Table中断向量是中断服务程序的入口地址,该地址是一个逻辑地址,含有段地址CS和偏移地址IP,是一个32位远指针。中断向量表是一种表数据结构,是中断服务程序入口地
11、址表,占用内存00000H003FFH的1K空间。这个表中共有256个表项,对应于向量号0255,每个表项为两个字,其中高字为CS,低字为IP。Intel公司规定:04是专用中断。531为将来扩展或特殊用途而保留。32255是用户可以使用的中断向量。在PC机中,ROM-BIOS设置部分中断向量,DOS启动后也建立一些中断向量。8.2.3 中断响应过程CPU在执行程序过程中,如果出现:l 内部中断,或l 外部中断,即中断请求信号有效8088/86按图中的左半部分顺序查询,并获得中断向量号,中断的优先级:l 内部中断(软件中断)l 非屏蔽中断l 可屏蔽中断l 单步中断获取中断向量号的处理过程:1)
12、 将标志寄存器压入堆栈,以保护各个标志位2) 使IF和TF为0,禁止可屏蔽中断和单步中断IF=0,是为了能够在中断响应过程中暂时屏蔽外部其他中断,以免还没有完成当前的中断响应过程而又被另一个中断请求打断。TF=0,是为了避免CPU以单步方式执行中断处理程序。3) 将断点保护在堆栈中断点是指在响应中断时,主程序中当前指令下面的一条指令的地址,即CS和IP中的值。4) 从中断向量号n乘以4的内存地址中取中断向量送CS:IP(n×4) (n×41)IP,(n×42) (n×43)CS5) 控制转移到CS:IP指示的中断服务程序入口地址,执行处理程序。6) 中断
13、服务程序最后的一条指令是IRET,该指令将标志寄存器和断点地址出栈恢复为中断前的值,于是控制又回到断点处继续执行。IRET中断返回指令格式:IRET操作:(IP)(SP)+1):(SP)(SP)(SP)+2(CS)(SP)+1):(SP)(SP)(SP)+2FLAGS(SP)+1):(SP)(SP)(SP)+28.2.4 中断响应时序8.3 中断控制器Intel 8259AIntel 8259A是一种可编程中断控制器,是为管理8080/8085和8088/86微处理器的可屏蔽中断而设计的,也可以用于80286。一片8259A可以管理8级中断,通过多片级联可以扩展至64级,每一级中断都可以单独被
14、屏蔽或允许。8259A在中断响应周期可提供相应的中断向量号。8.3.1 8259A内部结构和引脚8.3.2 8259A的中断过程1) 8259A的一条或几条IRi信号有效(高电平),表示请求中断,使IRR的相应位Di置位。2) 8259A对这些请求进行分析,如果中断允许则向CPU发出INT信号。3) CPU在允许可屏蔽中断时对INTR作出响应,产生中断响应周期。4) 8259A收到第一个-INTA有效信号后,使最高优先级的ISR位置位,对应的IRR位复位。5) 8259A收到第二个-INTA有效信号时,把中断向量号送上数据总线,供CPU读取。6) CPU利用中断向量号转至中断服务程序,直到IR
15、ET指令返回。8.3.3 8259A的工作方式8.3.4 8259A的编程编程分为:l 初始化编程l 中断操作编程8259A能够开始工作之前必须进行初始化编程,即给8259A写入初始化命令字(Initialization Command Word, ICW)。在8259A工作期间,可以通过写入操作命令字(Operation Command Word, OCW)将选定的操作传送给8259A,使之按照新的要求工作。同时,还可以读取8259A的信息,以便了解其工作状态。8.3.4.1 初始化命令字ICWICW共有4个,是8259A在开始工作前必须写入的,且必须按照ICW1ICW4的顺序写入,设置的流
16、程如下: 8.3.4.1.1 ICW1初始化命令字8.3.4.1.2 ICW2中断向量命令字8.3.4.1.3 ICW3级连命令字8.3.4.1.4 ICW4中断方式命令字8.3.4.2 操作命令字OCW8259A工作期间可以随时接受操作命令字,OCW共有3个:OCW1,OCW2,OCW3,写入时没有顺序要求。8.3.4.2.1 OCW1屏蔽命令字8.3.4.2.2 OCW2中断结束优先级循环命令字8.3.4.2.3 OCW3屏蔽和读状态命令字8.3.5 8259A在IBM PC系列机上的应用8.3.5.1 IBM PC/XT的硬件中断8.3.5.2 IBM PC/AT的硬件中断主从INT n
17、IRQ008HIRQ109HIRQ20AHIRQ870HIRQ971HIRQ1072HIRQ1173HIRQ1274HIRQ1375HIRQ1476HIRQ1577HIRQ30BHIRQ40CHIRQ50DHIRQ60EHIRQ70FHIBM PC/AT机使用两个8259A形成级连系统,在ROM-BIOS对它们的进行初始化。1) 利用上升沿做为中断请求IRQ的有效信号。2) IRQ0IRQ7的中断向量号为08H0FH,IRQ8IRQ15的中断向量号为70H77H。3) 采用普通全嵌套优先级方式,顺序从高到低:IRQ0IRQ2,IRQ8IRQ15,IRQ3IRQ7且不能改变。;初始化主片8259
18、Amov al, 11h;写入ICW1:设定边缘触发,级联方式out 20h, al;主片I/O地址是20H和21Hjmp intr1;转移指令起到延时作用,等待8259A操作结束intr1:mov al, 08h;写入ICW2:设定主片IR0的中断向量号为08Hout 21h aljmp intr2intr2:mov al, 04h;写入ICW3:设定主片IR2级连从片out 21h, aljmp intr3intr3mov al, 01h;写入ICW4:设定普通全嵌套方式,; 普通中断结束方式out 21h, al;初始化从片8259Amov al, 11h;写入ICW1:设定边缘触发,级
19、联方式out 0a0h, aljmp intr5intr5:mov al, 70h;写入ICW2:设定从片IR0的中断向量号为70Hout 0a1h aljmp intr6intr6:mov al, 02h;写入ICW3:设定从片级连于主片的IR2 out 0a1h, aljmp intr7intr7mov al, 01h;写入ICW4:设定普通全嵌套方式,; 普通中断结束方式out 0a1h, al4) 采用普通中断结束方式,需要在中断服务程序中发送普通EOI命令。;对主片的IRQ0IRQ7中断,发送普通EOI命令(OCW2)mov al, 20h;out 20h, al; ;对从片的IRQ
20、8IRQ15中断,发两个送普通EOI命令,;一个给从片,一个给主片mov al, 20h;out 0a0h, al;写入从片EOI命令out 20h, al;写入主片EOI命令5) 采用普通屏蔽方式,通过写入IMR允许中断,但注意不要破坏原屏蔽状态,如允许IRQ0(日时钟中断),IRQ1(键盘中断)in al, 21h;读出IMRand al, 0fch;只允许IRQ0,IRQ1,其余不变out 21h, al;写入OCW1,即IMR8.4 中断服务程序8.4.1 内部中断服务程序主程序(用户的应用程序)通过中断指令INT n执行内部中断服务程序。编写内部中断服务程序与编写子程序类似,都是用伪
21、指令proc/endp。不同的是:进入中断服务程序后,通常要执行指令STI开放可屏蔽中断,最后执行IRET指令返回调用程序。内部中断服务程序通常采用寄存器传递参数。主程序在调用内部中断服务程序之前,必须修改中断向量,使其指向相应的中断服务程序,可以利用DOS功能调用21H的功能25H来实现:DOS功能调用21H 设置中断向量功能号:AH 25H入口参数:AL 中断向量号DS:DX 中断向量(段地址:偏移地址)主程序在结束之前要将修改的中断向量恢复回来,可以利用DOS功能调用21H的功能35H来实现:DOS功能调用21H 获取中断向量功能号:AH 35H入口参数:AL 中断向量号ES:BX 中断
22、向量(段地址:偏移地址)例:编写80H号中断服务程序,显示以0结尾的字符串,字符缓冲区首地址为该中断服务程序的入口地址,利用DS:DX来传送。主程序首先获取80H原中断向量并保存之,然后设置新的中断向量,之后主程序就可以调用80H中断服务程序了。主程序最后应恢复原中断,达到返回到DOS后而不改变系统状态的目的。;数据段intoffdw ?intsegdw ?intmsgdb Merry Christmas, 0dh, 0ah, 0;-;代码段mov ax, 3580h;获取原80H中断向量int 21hmov intoff, bx;保存中断向量的偏移地址mov intseg, es;保存中断向
23、量的段地址push dsmov dx, offset new80hmov ax, seg new80hmov ds, axmov ax, 2580h;设置本程序的80H中断向量int 21hpop ds;mov dx, offset intmsg;设置ISR的入口参数DS:DXint 80h;调用80H ISR,显示字符串;mov dx, intoff;恢复原系统的80H中断向量mov ax, intseg;注意要先设置DX,后设置DS,因为mov ds, ax;先改变了DS就不能准确获取intoff变量mov ax, 2580hint 21h;-;80H ISRnew80hprocsti;开
24、中断push ax;保护现场push bxpush simov si, dx;DX为字符串的偏移地址lp1:mov al, si;取一个字符cmp al, 0;为0就结束jz lp2mov bx, 0;采用ROM-BIOS调用显示一个字符(系统调用)mov ah, 0ehint 10hinc si;指向下一个字符jmp lp1lp2:pop si;恢复现场pop bxpop axiret;中断结束new80hendp8.4.2 外部中断服务程序外部中断服务程序用于实现系统与外设交换信息。编写外部中断服务程序具有一定的特殊性,较编写内部中断服务程序复杂。编写外部中断服务程序需要注意的问题:l 发
25、送中断结束命令8259A采用普通中断结束方式,需要发送EOI命令l 一般只能存储器单元传送数据中断是随机发生的,除CS、IP外,其他寄存器是不可预知的。l 不要使用DOS功能调用DOS内核规定DOS功能调用是不可重入的。最好使用ROM-BIOS调用,或直接对I/O接口编程。l 中断服务程序尽量短小,保证实时性。主程序方面l 需要修改中断向量l 控制CPU的IF标志l 设置8259A的IMR例:8259A的IRQ0(中断向量号为08H)来自于定时计数器8253,每隔55ms产生一次,实现日时钟计时。本程序用新的08H号中断服务程序暂时代替计时程序,使得每次中断显示一串信息,显示10次后,恢复原中断服务程序,返回DOS。;数据段intmsgdb A 8259A Interrupt!,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 零星维修服务协议
- 湖南省长沙市开福区2024-2025学年八年级上学期期末生物学试题(含答案)
- 英语学习情境创设与运用课程设计
- 医疗健康技术发展动态表
- 《世界著名音乐作品欣赏与解析教案》
- 教育资源投入与使用效果对比分析表
- 非谓语动词在各类时态中的用法解析:高一英语教学教案
- 个人健康管理大数据分析与服务平台建设方案
- 营销总监聘用协议
- 数字校园采购协议
- 《马克思主义政治经济学概论》课程教学大纲
- 仓库管理基础知识培训模板课件
- 孤独症康复教育人员上岗培训练习题库及答案
- 环境心理学课件
- 《质量保证体系》情况说明
- 亲人意外逝世的讣告微信群通知五篇-正式的去世讣告模板
- DB62∕T 4134-2020 高速公路服务区设计规范
- 中电朝阳250兆瓦智慧风储一体化风电项目环评报告书
- 做一个幸福教师
- 国家自然科学基金申请标书模板
- 车间断针记录表
评论
0/150
提交评论