




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机原理与应用第8讲中断技术和器北京理工大学信息与电子学院第8讲中断技术和器8.18.28.38.48.5中断技术概述中断和中断向量表中断类型和优先级中断器8259A8259A应用举例28.1中断技术概述中断:处理器暂停执行当前程序,转而处理随机发生的处理完毕后再返回到断点处继续执行原来程序的过程。,当前中断响应中断请求程序断点程序中断返回3中断源中断服务程序8.1中断技术概述引入中断的最初目的是为了提高系统的输入输出性能,解决快速主机和中、慢速外设速度不匹配的矛 盾中断技术已经应用到计算机系统的许多领域实时处理分时操作故障处理程序监视和跟踪4中断和子程序调用的区别子程序调用是由程序员实现安
2、排,而中断服务程序的执行则是由随机中断触发子程序的执行受主程序或上层程序般与被中断的现行程序无关,而中断服务程序一一般不存在同时调用多个子程序,但可能发生多个外设同时向CPU发出中断服务请求的情况8.2中断和中断向量表在中断发生后,中断处理程序需要对因各种中断进行处理。触发的相应80X86中断系统能处理256种类型的中断,同时给每种中断安排了一个中断类型号,即0H0FFH号中断,每种类型的中断都有相应的中断处理程序。如何有效地管理和保存如此多的中断及其对应的中断处理程序呢?那就是利用中断向量表。6中断向量表中断向量表是一个特殊的线性表,它保存着系统所有中断服务程序的地址。在80X86微机系统中
3、,该表保存的256个中断向量分别对应于256种中断类型每个表项占4个字节,其中两个字节存放中断处理程序的址,另两个字节存放中断处理程序的偏移量,所以中断向量表为1K字节,它起止于器中地址0000H3FFH处。例如,溢出中断的中断类型号为04H,则它的中断向量的地址为04H×4=10H,内存地址从10H开始的4个字节中,10H和11H两字节中存 放溢出中断程序的偏移地址,12H和13H两字节中存放溢出中断程序的址7中断向量表88086中断向量表9中断类型号中断向量地址中断的含义00H1FH00000H0007FHBIOS中断向量20H3FH00080H000FFHDOS中断向量40H5
4、FH00100H0017FH扩充BIOS中断向量60H67H00180H0019FH用户中断向量68H6FH001A0H001BFH保留70H77H001C0H001DFHI/O设备中断向量78H7FH001E0H001FFH保留80H0FDH00200H003C3HBASIC0F1H0FFH003C4H003FFH保留中断处理过程举例(3)取出中断向量4字节单元中的内容,将其中两字节代表中断处理程序址的内容送入CS寄存器,两字节代表中断处理程序偏移量的内容送入IP寄存器(2)计算中断向量地址(1)取中断的中断类型号20H 4×=80H中断指令:INT20H内存单元0000:0080
5、1072IP0000:00810000:0082下一条指令:MOVAX, 00000:008300A7CS(4)转向相应的中断处理程序00A7:1072STIIRET存放于内存单元的中断处理程序(5)中断返回到原中断指令的下一条指令处7210A700和设置中断向量中断向量是系统用来存放中断服务程序或系统参数的地址。中断向量(1)DOS功能调用的方法DOS提供了用功能调用的方法来中断向量的功能,中断21H的功能35H就能如下:参数:AH35H,AL中断号出口参数:ES:BX中断处理程序的指定中断号的地址。其使用参数地址(2)直接单元的方法由前面的知识可知:在内存的第0段中断向量表是若中断号为n,
6、那么,其地址在表内的偏移量为4n11设置中断向量(1)DOS功能调用的方法中断21H的功能25H可为指定的中断号设置新的其使用方法如下:地址。参数:AL中断号,DS:DX中断处理程序的地址出口参数:无12设置中断向量(2)直接单元的方法CLIMOV word ptr BX, OFFSET NewFunc;设置中断处理程序的偏移量MOV word ptr BX+2, SEG NewFunc;设置中断处理程序的STI址指令CLI确保随后两条MOV指令可以被连续执行而不被打断。这是因为执行第一条MOV指令后,原中断向量表中的地址就被破坏了,这时,该地址既不指向原处理程序,也不指向新处理程序。如果此刻
7、正巧发生了该类型的中断请求,那么,系统将转向一个的位置。如果程序员能确信此时发生该类型的中断请求,当然也就不必关中断指令。后面的指令STI是开中断指令,它CPU响应其后的中断请求。13修改中断向量在编程的实际过程中,若要修改某个具体的中断处理程序时,一般需要按下面 的操作过程来完成:(1)指定中断的中断处理程序的地址,并把它保存在单元内;(2)把用户编写的程序段设置为指定中断的新处理程序;(3)在用户程序结束之前(或不需要新的处理程序时),把步骤(1)保存的入口地址恢复成处理该中断的地址。程序员按以上3编程,可保证:在其程序运行过程中,该指定的中断将按新的处理程序来处理,程序结束后,中断系统又
8、恢复成原来的处理方式。所以,这种中断向量的改变对其他程序或使用者来说是透明的,当然也就影响它们的正常。14修改中断向量INTNO EQU 40H OLDADDR DD ?NEWPROG PROC NEWPROG IRETENDP;将占用的中断号;新中断处理程序;步骤3,恢复原地址MOV DX, word ptr OLDADDR MOV DS, word ptr OLDADDR+2 MOV AL, INTNOMOV AH,25H;步骤1,获取并保存原MOV AL, INTNO MOV AH,35H INT 21HMOV word ptr OLDADDR, BXMOV word ptr OLDAD
9、DR+2, ES地址INT21H;步骤2,设置新的地址MOV AX, SEG NEWPROG MOV DS, AXMOV DX, OFFSET NEWPROG MOV AL, INTNOMOV AH, 25H INT 21H15;用户主程序。8.3中断类型和优先级中断源:在中断过程中,引起紧急事务的为中断源。常见的中断源大致分为CPU外部产生的中断和CPU内部产生的中断。外部中断源通过NMI引脚传递的非通过Intel 8259A可编程中断内部中断源中断器传递的外部中断除法出错中断、单步中断、INTO指令产生的溢出中断安排的INT n中断指令产生的中断16中断的分类17外部中断不可不可中断中断是
10、用来处理一些紧急情况,如电源故障、内存或I/O总线的奇偶错误等异常。它不能由用户通过指令进行,也不受中标志IF的限制。一旦CPU接收到NMI引脚上的信号,就必须立断即响应,转向NMI的中断服务程序,硬件将自动完成断点保护和现场保护,并在中断返回时执行一条RETN指令。可可中断中断通常来自外部设备,可以通过指令设置中断器的参数来某些指定的中断。18外部中断的在外设发出中断请求到CPU响应中断的过程中有两个件条,该条件由8259A的中断该外设的中断请求是否被寄存器(IMR)CPU是否;响应中断,该条件由CPU的标志寄存器(FLAGS)中的中。位IF来断可以通过以下两条指令来设置和清除IF位。;开中
11、断,IF=1;关中断,IF=0在STICLI在任何类型的中断发生时,CPU将当前的FLAGS入栈,并置IF为0,然后进入中断处理程序。当中断处理程序完成,执行到中断返回指令IRET时,从栈中恢复原FLAGS的值,将IF置1,这时新的中断发生。如果需要在一个中断处理程序的执行过程中 也可以使用开中断指令STI。响应另外的中断,19内部中断内部中断,通常也叫异常,主要包括内部硬件中断和软件中断内部硬件中断是指由某些特殊指令触发的中断,如 单步中断除法出错中断溢出中断软件中断则是指由指令INT n引起的非DOS中断BIOS中断其他自由中断中断,如20内部中断(1)除法出错中断,中断类型号为0除法运算
12、中除数不能为0,因此在不慎写入了除数为零的除法运算,就会产生除数为零的中断。还有一种情况,那就是在除法运算中,所得的商大于某一确 定的极值也将引起除法出错中断。例如:MOV DX,34HMOV AX,5678H MOV BX,1DIVBX上面的4条指令,是一个双字除以字的运算。结果将商放在AX寄存器中,余数放在DX寄存器中。对于无符号数商的最大值为65535,而这里除数BX为1,所以商345678H必然大于65535,因此也将产生一个除法错误。21内部中断(2)溢出中断,中断类型号为4在指令序列中,若上一个指令由于某些特殊的使溢出标志OF置1,那么当执行溢出中断指令INTO时会立即产生04H类
13、中断,若OF标志为0,则INTO不起作用。(3) 单步中断和断点中断在使用DEBUG调试程序时,会经常使用到T命令和P命令,而这两个命令的 执行恰好是利用了内部硬件中断之一的单步中断INT 01H和断点中断INT 03H,它的特征是将陷阱标志TF置位,这样当程序运行时,会在每一条指令的后面产生一个单步中断,从而终止指令的继续执行。(4) 软件中断CPU在一条INT n指令后,就会立即产生n类软件中断,调用系统中相应的中断处理程序完成中断的功能。其中INT n指令的n为中断类型号。2280386中断和异常一览表中断处理机制(1)当中断源向CPU发出中断请求时,CPU能决定是否响应此中断请求,在响
14、应中断请求的情况下要能保护断点,中断处理程序够正确返回断点处继续执行。毕后能(2)中断应具有优先级。在某一时刻如果有许多中断源同时发出中断请求,CPU应能够实现中断优先级排队,即按中断请求的级别来决定先响应哪一个中断,保证首先响应优先级高的中断请求。(3)能够实现中断的嵌套。已经响应了某个中断请求而进入相应的中断服务程序,如果这时又有了一个级别更高的中断请求,CPU应该能暂时挂起正在进行的中断服务程序,转而去响应更高优先级的中断请求,响应结束 后再返回到原中断处理程序。24中断的优先级中断级依次降低内部中断和异常软件中断外部非外部可中断中断25中断的嵌套中断嵌套可以有多级,具体级数原则上不限,
15、只取决于堆栈深度。1#中断服务程序2#中断服务程序3#中断服务程序原主程序响应响应响应1#中断请求2#中断请求返回3#中断请求返回返回26中断源的识别(1)软件识别法方法是:当CPU响应中设备0设备1 设备2 设备3设备4 设备5设备6 设备701234567断后,用软件有哪些外设申请中断,哪个中断源的级别更高,并首先为它进行中断服务。INTR1软件识别法INTEST JNE TEST JNE TESTJNE PROG5AL,20HAL,80H PG7 AL,40H PG6AL,20HPG5;中断请求触发器的状态字;检查“设备7”是否有请求;有转至“设备7”处理程序PG7;检查“设备6”是否有
16、请求;有转至“设备6”处理程序PG6;检查“设备5”是否有请求;有转至“设备5”处理程序方法优点:1、次序即是优先权次序。2、省硬件,不需要硬件排队电路。缺点:转至服务程序时间长。硬件识别法链式优先权排队电路链式优先权排队电路也称为菊花链式优先权电路,能处理多中断源同时申请中断,也可实现中断嵌套。原理:每个中断设备的接口电路中有一个称为菊花链的逻辑电路,控 制中断响应信号传递,前面设备优先权最高,其余依次降低。vector addresspriority inpriority out中断菊花链逻辑图中断响应IR0F/FA中断请求IR1F/FB中断请求低电平高电平7.4中断8259A8259A是
17、一种可编程中断器ü 一片Intel 8259可管理8个中断请求,并把当前优先级最高的中断请求送到CPU的INTR端;ü 当CPU响应中断时,为CPU提供中断类型码;ü 8个外部中断的优先级排列方式,可以通过对8259编程进行指定。也可以通过编程某些中断请求,或者通过编程改变中断类型码;ü9片8259级联,64级中断系统。328259管脚ü D7D0:数据线,双向,用于与CPU之间传送命令、状态、中断类型码;ü RD#:读信号,输入,通知8259把某个内部寄存器的值送数据线D7D0;ü WR#:写信号,输入,通知8259把数据
18、线D7D0上的值写入内部某个寄存器;ü A0:选择内部寄存器的端口地址,输入;ü CS#:片选,输入;ü INT:输出,把IRQ7IRQ0上的最高优先级请求传送到CPU的INTR引脚;ü INTA# :接收CPU的中断响应信号。CPU发出的中断响应信号为两个负脉冲: 第一个负脉冲作为中断应答信号,第二个负脉冲到来时,8259从数据线D7D0上发出中断类型码;ü IR7IR0:接收来自外设的中断请求,输入,高电平或上升沿有效;ü CS2CS0:级联信号线,当8259A为主片时为输出引脚,从片时为输入引脚。收到第一个INTA时,主片通过这
19、三根线通知有中断申请的从片在第二个INTA时送出中断类型码;ü SP#/EN#:主从定义/缓存;33单片信号连接34多片信号连接358259编程结构368259编程结构378259编程结构:寄存器8259部分包含7个寄存器,分为2组:Ø 初始化命令字寄存器ICW(initialization command word)ICW1ICW4:由系统启动时初始化程序设置;Ø 操作命令字OCW(operation command word)OCW1OCW3:由应用程序8259处理部件包含3个寄存器:Ø 中断请求寄存器IRR:interrupt request re
20、gister;Ø 中断优先级裁决器PR:priority resolver;Ø 当前中断服务寄存器ISR:in service register; 接收和处理从引脚IR7IR0进入的中断;,对中断处理过程动态;388259A的工作过程中断请求寄存器D7D6D5D4D3D2D1D01中断寄0存器1010 D7 D6 D5 D4 D3 D2 D1 D000000100去往CPUD4 D2 D0D4D0D0 请求阶段8259A的工作过程中断请求寄存器 响应中阶断段类型D7 D码6 D5 D4 D3 D2 D1 D000010100中断服务寄存器D7 D6 D5 D4 D3 D2
21、D1 D000000001CPU取走类型码8259令在8259A进入正常工作之前,必须将系统中的每个8259A进行初始化,根据系统是否级联以及工作模式将选用不同的初 始化命令字。对8259A内部寄存器的选择依靠CS#、地址线A0、命令字特征位D4来选择不同的寄存器。对8259A初始化命令和操作命令划分在两个不同的阶段。对于8259A初始化一旦开始,就必须根据初始化要求,严格按流程逐一写入初始化命令。对8259的操作命令字设置靠A0和命令字特征位D4区分。41(1)中断触发方式8259A有两种触发方式:Ø 边沿触发方式8259A将中断请求输入端出现的上升沿作为中断请求信号Ø
22、电平触发方式中断请求端出现高电平是有效的中断请求信号(2)优先级管理方式8259A的优先级管理方式有3种 固定优先级方式 自动循环方式 指定优先级方式固定优先级方式也叫普通完全嵌套方式,是8259A最常用的方式。8259A初始化后未设置其它优先级方式,就按该方式 工作,它是8259A的缺省工作方式。最低最高IR7IR6IR5IR4IR3IR2IR1IR0优先级自动循环方式优先权自动循环方式:在给定初始优先顺序IR7IR0由低到高按序排列后,某一中断请求得到响应后,其优先权降到最低,比它低一级的中断源优先级最高。开始时:正在被服务的有IR4与IR6。IR4服务p完成后:IR6正在被服务。最高最低
23、IS7IS6IS5IS4IS3IS2IS1IS001000000最低最高IS7IS6IS5IS4IS3IS2IS1IS001010000指定优先级方式通过编程指定最低优先级中断源,使初始优先级顺序按循环方式重新排列。如指定IR3优先级最低(见下图),则IR4优先级最高,优先级顺序为IR3、IR2、IR1、IR0、IR7、IR6、IR5、IR4由低到列。通过操作命令字OCW2将固定优先级设置为指定最低优先级方式。ICW2D7D6D5D4D3D2D1D011100011(3)中断方式普通方式:按IMR的内容或开放该级中断,同时同级或低级的中断源中断高级的中断源中断低级的,不正在执行的中断服务程序。
24、普通方式通过写字OCW1来设置。特殊方式:系统在执行一个中断时,可以响应较高级的中断请求,也可以响应较低级的中断请求的工作方式。采用特殊,在用字OCW1对IMR中的某一位置1时,同时使ISR对应位清0。(4)中断结束处理方式中断服务结束时,给8259AISR相应位清0,表示该中断服务结束,称之为中断结束处理。中断结束处理方式有两类:自动结束方式(AEOI)和非自动结束方式(EOI),而非自动结束方式又分为正常中断结束方 式和指定中断结束方式。自动结束方式(AEOIAutomaticEndofInterrupt)适应于无中断嵌套的系统。当某级中断被CPU响应后,8259A在第二个中断响应周期信号
25、结束后,自动将ISR中的对应位清0。Ø中断结束处理方式非指定中断结束方式(Non-specificInterruptMode)通过在中断服务设置EOI命令,使ISR中优先级最高Ø的清0。用于固定优先级方式,该方式ISR中级别最高的位就是当前正在处理中断源的对应位。该方式通过初始化命令字ICW4的D1位清0,同时将OCW2的D7D6D5设置为001来实现。Ø指定中断结束方式(SpecificInterrupt)与非指定中断结束方式相比,其不同点在于发中断结束命令的同时,还需要在命令中指出结束中断的中断源是那一级,使ISR的相应位清0。(5)系统连接方式8259A缓冲
26、方式有2种连接方式:缓冲非缓冲方式。每片8259A都通过总线驱动器数据总线相连,适用于多片8259A级连的:主片SP/EN端输出低电平信号,作总线驱动器的启动信号,接总线驱动器OE端。从片接地。非缓冲方式8259A直接与数据总线相连,适用于片数不多的系统。非缓 冲方式,单片或级连8259A的主片SP/EN端接高电平,从片接低电平。上述方式通过初始化命令字ICW4的D3位设置。6.程序方式CPU8259A的状态,当查到有中断请求时,就根据它提供的信息转入相应的中断服务程序。 8259AINT信号,CPU也不开放中断,方法是:CPU关中断(IF=0),写入OCW3工作方式不发(OCW3的D2位为1
27、),然后执行一条输入指令。如果OCW3的D2D1位=11时,表示既发命令,又发读命令,执行输入指令时,先读出状态字,后读出ISR(或IRR)。,不需执行中断响应周期,不设置中断向量表,响应速度快,占用空间少。8259令8259的初始化命令字ICW1ØØA0=0,D4=1 表示对ICW1编程;D0(IC4)D0=1需要ICW4;D0=0 不需要ICW4;D1(SNGL)D1=1为单片8259工作方式;D1=0 为级联工作方式,此时要用ICW3指明级联端;D2(ADI)指明8080/8085系统中地址间距,8086系统不用;D3(LTIM)D3=1 中断请求是电平触发方式;D3
28、=0 上升沿触发方式;D5D7(A5A7)8080/8085系统中断服务程序页面地址,8086系统不用。ØØØØ8259的初始化命令字ICW2ICW2是中断类型码初始化命令字,A0=1,跟在ICW1后表示对ICW2编程。ICW2设置中断类型码;中断类型码高5位来自ICW2高5位,低3位对应IR0IR7。8259的初始化命令字ICW3ICW3是标志主片/从片的初始化命令字,只有当SNGL=0时, 跟在ICW2后面出现,对其设置应使A0=1;ü 只有在系统中包含多片8259时,ICW3才有意义,即当SNGL=0时 才设置ICW3 ;ü 当
29、本片为主片时,对ICW3相应位置1表示IR0 IR7相应管脚上连有从片;ü 当本片为从片时, ICW3低3位表明本片的INT引脚连接在主片的哪个中断输入引脚;8259的初始化命令字ICW3ID2ID0对应从片的标识位,响应中断时,第一个INTA,主 片从CAS2 CAS0送出识别号,从片接收识别号,若从片的CAS2CAS0与自身识别号相同,在第二个INTA送出中断类型码。8259的初始化命令字ICW4ICW4是方式ICW4;初始化命令字,只有当IC4为1时,才有必要设置Ø D5D7=000作为ICW4的标识码;Ø D4(SFNM)D4=1 为特殊全嵌套方式,此时一
30、般用于多片级联方式;D4=0 为普通全嵌套方式,Ø D3(BUF)同级中断再次进入,同级中断再次进入。D3=1为缓冲工作方式, 即8259通过总线驱动器和数据总线相连,此时SP#/EN#为输出,用于缓冲器选通信号;D3=0为非缓冲工作方式。8259的初始化命令字ICW4D0(mPM)D0=1为16位处理器体系;D0=0 为8085处理器体系;D1(AEOI)D1=1自动结束中断方式,在第二个INTA#时,清中断服务寄存器ISR中的对应位;D1=0 非自动结束中断方式,中断结束时发EOI命令清ISR中的对应位;D2(M/S)在缓冲方式下(BUF=1),表示本片为主片或从片:M/S# =
31、 1为主片, M/S# = 0为从片。在非缓冲方式下,由SP#/EN#引脚设定主片和从片,本 位不起作用。ØØØ全嵌套中断方式流程结束中断的处理方式举例8259初始化流程MOV AL, 13HOUT 80H, AL;设置ICW1;MOV AL,18HOUT 81H, AL MOV AL,0DHOUT 81H, AL;设置ICW2,中断类型码00011IR;设置ICW4;8259的操作命令字OCW1操作命令字可在任何时候写入8259A ,且无顺序。OCW1为中断操作命令字;A0=1 表示设置OCW1;Mi=1 表示IRi输入中断请求;8259的操作命令字OCW2OC
32、W2用来设置优先级循环中断结束方式;A0=0,且D4D3 = 00,表示对OCW2编程;Ø R,优先级循环状态R=1优先级自动循环;R=0优先级不循环;Ø EOI中断结束命令位,非自动结束Ø SL设定标志。清ISn;SL=1,由L2、L1、L0指明中断号或最低优先权; SL=0,则L2、L1、L0无效;8259的操作命令字OCW2RSLEOI001非特殊EOI结束中断命令,清除当前的中断响应011特殊EOI命令,清除由L2 L1 L0指示的中断响应101非特殊EOI命令,清除当前的中断响应,优先级循环一次100设置在中断自动结束模式下按优先级自动循环方式工作000
33、取消在中断自动结束模式下的优先级自动循环工作方式111结束由L2L0指示的中断,并使L2L0为最低优先级110设定最低优先级特殊循环,此时由L2L0指出最低优先级010无操作8259的操作命令字OCW2Ø EOI=0时,OCW2用来指定优先级循环方式;EOI=1时, OCW2用来作为中断结束命令,同时使系统按照某一方式继续工作;Ø 8259A在上电初始之后,如未设定其它方式,则8259A自动进入全 嵌套工作方式,即:ü 中断请求优先级顺序是IR0IR7,其中IR0优先权最高,IR7优先权最低;ü 中断服务寄存器ISR中得到响应的被置“1”,且保持到中断服
34、务程序在返回前发出的中断结束命令EOI为止。非特殊的EOI命令为MOVOUTAL,PORT,20HAL;PORT为8259A的端口地址。再发生同级的或更低级的中断,而较高级的中断ü 在ISR寄存器置位期间,请求仍能得到响应;ü 利用非特殊的EOI命令结束中断,总是清除ISR中优先权最高的置“1”的,这样保证中断嵌套得以实现。8259的操作命令字OCW3操作命令字OCW3的功能包括:Ø 设置和撤销特殊方式;Ø 设置中断方式;Ø 设置对8259内部寄存器的读出命令;A0=0,且D4D3 = 01,表示对OCW3编程ØESMM SMM,特殊
35、模式使能位,特殊,无优先级,未模式位中断申请均可11,设置特殊进入中断;10,取消特殊,恢复原来的优先级方式;中断源的方式Ø 普通ü对方式寄存器中相应位置1,对应的某一级中断受到;ü 可在程序不同阶段改变寄存器状态;Ø 特殊方式ü 为了动态改变系统的优先级结构,希望在处理某一优先 级中断时,能够开放级别较低的中断请求;ü 在特殊方式下,对某一中断位置位后,使当前中断服务寄存器中对应位自动清0,从而开放了其他级别较低的中断;ü 在中断处理使用;8259的操作命令字OCW3Ø P ,P1,设置8259A为工作方式,此时
36、8259A不发INT信号,CPU通过指令决定服务程序。CPU通过设置P=1命令,执行一条读指令,得到中断信息;I1,表明有中断发生;W2W0表明当前中断优先级最高的中断号;8259的操作命令字OCW3Ø P ,当P0时,设置RR1,可以对8259内部寄存器的读寄存器IRR和ISR的内容;出命令来RR=1,RIS=0, 读中断请求寄存器IRR ;RR=1,RIS=1, 读当前中断服务寄存器ISR ;A0为1(奇地址)时,的是IMR7.58259应用举例例1:多片8259组成的主从式中断系统8259应用举例1主片的端口地址在020H03FH范围内,实际使用20H21H两个端口。从片的端口
37、地址为0A0H0BFH,实际使用0A0H0A1H两个端口。从片的INT信号与主片的IR2端相连,这样共15个向量中断。主8259A的中断类型号08H0FH;从8259A的中断类型号70H77H。根据上述硬件连线,系统上电期间,对8259A的主片和从片进行初始化。8259应用举例1主8259A初始化程序:INTA1CSEQU020HMOV OUTMOV OUTMOV OUTMOV OUTAL,11H;ICW1边沿触发,多片ICW4INTA1CS,ALAL,8 INTA1CS+1,AL;ICW2中断向量AL,4;ICW3主片IR2上接从片INTA1CS+1,AL;S2=1AL,01H;ICW4无缓
38、冲,非自动结束中断INTA1CS+1, AL8259应用举例1从8259A初始化程序:INTA2CSEQU0A0HMOV OUTMOVOUTMOV OUTMOV OUTAL,11H ; ICW1边沿触发多片,需要ICW4 INTA2CS,ALAL,70H;ICW2中断号高5位INTA2CS+1,ALAL,2;ICW3从片接主片的IR2INTA2CS+1,ALAL,01H;ICW4非缓冲,非自动结束中断INTA2CS+1, AL8259应用举例2TYPE-ER为测试练习英文打字速度的程序。根据屏幕上提示的字符行,由键盘逐个输入字符,最后以“回车”符的输入。字在利用了日时钟中断,日时钟中断设置55
39、ms定时,通过修改日时钟中断向量来对用户打字实现,中断服务程序对中断次数进行统计,每18次后秒计数加1,然后逐一对分、时进行调整。主程序功能对待键盘输入,进行初始化为0,并清除错误计数缓存区,等键盘输入字符是否为命令,若“ESC”则结束打字测试,若“回车”则显示输入一行字符所花时间以及键入字符错误个数,此外均将键入字符与提示行字符进行逐 一比较,以统计正确率。8259应用举例2例2:测试练习打字速度TITLESTACKTYPE_ER -TEST TIME FOR TYPING EXERXISESEGMENT STACK 'STACK'DB256 DUP (0)TOP STACK
40、 DATA DEBUG BUFFER BUFPT1 BUFPT2 KBFLAG PROMPT OLDCS9OLDIP9LABELWORDENDSSEGMENTEQU DB DW DW DB DB DWDW032 DUP(?)000' *PLEASE PRACTICE TYPEING*',0DH,0AH,'$'?8259应用举例2STR1 STR2 STR3STR4DB DB DBDB'ABCDEFGHIJKLMNOPQRSTUVWXYZ. ' , 0DH,0AH,'$''CHRISTMAS IS A TIME OF JOY
41、 AND LOVE.' , 0DH,0AH,'$' 'STORE WINDOWS HOLD TOGS AND GIFTS.', 0DH,0AH,'$''PEOPLESENDCHRISTMASCARDSANDGIFTS.',0DH,0AH,'$'STR5 CRLF COLON SADDR COUNT HOURS1HOURSDB DB DB DW DW DB DB DBDB'SANTA WISH ALL PEOPLE PEACE ON EARTH.' 0DH,0AH,'$'
42、9;:','$'STR1,STR2,STR3,STR4,STR5 00DH,0AH30H30H ': '8259应用举例2MINDB DB DB DB DB DB DB DB DBDB30H30H ':' 30H30H0DH,0AH 'ERROR' 30H30H0DH,0AH,'$'SECERRERR1SAVE_08 MEM MEM1DATADW DB DBENDS2 DUP(?)10?8259应用举例2CODE ASSUME TYPE_ERSTART:SEGMENTCS:CODE,DS:DATA,SS:S
43、TACK,ES:DATAPROCFARMOV MOV MOV CLI MOV OUT MOV OUT MOV OUTPUSHAX,DATAES,AXDS,AX;关闭中断;置8253的0通道为模式2AL,00110100B43H,AL AX,0 40H,AL AL,AH 40H,ALES;装定时间常数8259应用举例2MOV MOV INT MOV MOV POP MOV MOV INT MOV MOV INT MOV MOVPUSHAH,35H AL,08H 21HSAVE_08,BX SAVE_08+2,ES ESAH,0AL,3 10H;保护原类型号8的中断向量FIRST:;设置显示为文本
44、模式DX,OFFSET PROMPTAH,9 21H SI,0DX, ES:SADDRSIDX;屏幕提示输出NEXT:;提示打印的字符8259应用举例2MOV INT MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV IN MOVANDAH,9 21HCOUNT,0 AL,30H ERR1+1,AL ERR1,AL SEC,AL SEC+1,AL MIN,AL MIN+1,AL HOURS,AL HOURS+1,AL AL,21H MEM1,ALAL,0FCH;初始化HH:MM:SS;30H0; 读中断寄存器;时钟中断、键盘中断8259应用举例2OUT PUSH MOV MOV MOV MOV MOV INT POP STI POP MOV INT CLICMP21H,AL DSDX,OFFSET CLINT ;设置类型号08新的中断向量BX,SEG CLINT DS,BXAL,08H AH,25H 21HDSFOR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 60350-1:2023+AMD1:2025 CSV EN Household electric cooking appliances - Part 1: Ranges,ovens,steam ovens and grills - Methods for measuring performance
- 2025年职业卫生工程师执业考试试题及答案
- 2025年小学英语教师面试题及答案
- 2025年社会服务与社会工作方法考试试题及答案
- 2025年短视频制作专业考生模拟考试试题及答案
- 2025年创意写作与编辑专业考试题及答案
- 2025年区块链技术与应用考试卷及答案
- 三人协议书范本
- 万科测评题库及答案
- 一级消防工程师模拟试题及答案
- 多彩的非洲文化 - 人教版课件
- 2025年年中考物理综合复习(压轴特训100题55大考点)(原卷版+解析)
- -《经济法学》1234形考任务答案-国开2024年秋
- 2025上海房屋租赁合同模板
- T-SCSTA001-2025《四川省好住房评价标准》
- 2025-2030全球及中国可持续飞机能源行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- TCGIA0012017石墨烯材料的术语定义及代号
- 西红门镇生活垃圾转运站及环卫停车场工程报告表
- 2025年信息系统监理师考试题(附答案)
- 农村留守儿童教育支持体系构建研究
- 车场管理考试试题及答案
评论
0/150
提交评论