书签 分享 收藏 举报 版权申诉 / 79
上传文档赚钱

类型汇编与接口-中断技术详解-精课件.pptx

  • 上传人(卖家):三亚风情
  • 文档编号:3209150
  • 上传时间:2022-08-04
  • 格式:PPTX
  • 页数:79
  • 大小:1.02MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《汇编与接口-中断技术详解-精课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    汇编 接口 中断 技术 详解 课件
    资源描述:

    1、中断技术中断基本原理 Intel系列微处理器的对外的中断引脚包括两个申请中断的硬件引脚(INTR和NMI),一个响应INTR中断的硬件引脚(INTA)Intel系列CPU最多包含256个中断向量,其中前5个在8086Pentium的所有Intel系列的微处理器中是相同的,一般保留前32个为Intel各种微处理器系列成员专用,用户可以使用后面224个向量。保护模式下,把外部中断称为“中断”(Interrupt),把内部中断称为“异常”(Exception)。中断 分为可屏蔽中断和不可屏蔽中断。CPU只有一个INTR引脚,外部中断源有很多,因此一般需要中断控制器对外部中断源进行管理,选择优先级最高

    2、的中断请求发送到CPU的INTR引脚,常见的中断控制器有8259芯片异常 异常是不可屏蔽的,每一种异常类别具有不同的异常号码。异常分为故障(Fault)、陷阱(Trap)和中止(Abort)3种故障 故障是在引起异常的指令之前,把异常情况通知给系统的一种情况。故障的特点是可排除的。当控制转移到故障处理程序时,在堆栈中保存的断点CS及EIP的值指向引起故障的指令。这样在故障处理程序将故障排除后,执行IRET返回到引起故障的程序,刚才引起故障的指令可重新得到执行。陷阱 陷阱是在引起异常的指令执行之后触发的一种情况。软中断指令“INT n”、单步异常等是陷阱的例子。故障处理完毕后继续执行这一条指令,

    3、陷阱处理完毕后执行下一条指令。中止 中止是在系统出现严重的不可恢复的事件时触发的一种异常,产生中止后,正执行的程序不能被恢复执行,系统要重新启动才能恢复正常运行状态。NMI和INTR引脚接收外部中断源产生的中断请求,由CPU外部中断源发出的中断请求叫做外部中断,实线框里面列出的是在CPU内部中断源产生的中断,叫做内部中断。中断服务程序 响应中断时,CPU暂停当前正在执行的程序转而执行中断服务程序。中断服务程序包括保护现场、处理中断、发送中断结束命令、恢复现场、中断返回几个部分。(1)中断服务程序入口设置 中断服务程序的入口必须设置到中断向量表或者中断描述符表中,才会被CPU在中断响应时调用。因

    4、此,在初始化时主程序需要设置中断向量,在设置新的中断向量之前要保存旧的中断向量,以便恢复。(2)DS、ES的赋值 要用DS、ES访问程序自己的数据段,那么必须先给它们赋值。可以使用被中断的程序的堆栈。(3)软件中断的返回结果 对于某些软件中断(例如INT 21H服务程序),其返回参数保存在寄存器中,这时中断服务程序就不需要在堆栈中保存这些寄存器。实模式的中断处理 当中断发生以后,CPU都能得到一个中断类型号。CPU以中断类型号做为索引,通过查找内存中的中断向量表来寻找中断服务程序的入口。中断向量表(Interrupt Vector Table,IVT)就是各种中断类型的处理程序的地址表。中断向

    5、量表实质上就是由程序预先设置好的一块内存区域。256个中断服务程序的入口地址(段地址和偏移量,即中断向量)按中断类型码从小到大顺序存放。8086/8088的中断向量表位于存储器的00000H003FFH单元,占据1024个字节,这1024个字节被分为256个中断向量,每个中断向量占4个字节。这个4字节的中断向量包含了中断服务程序的段地址和偏移量。中断处理过程 标志寄存器的内容压入堆栈,保护各个标志位。清除中断标志(IF)和陷阱标志(TF),禁止可屏蔽中断INTR引脚和陷阱或单步功能。保存断点;将断点逻辑地址(返回地址)压入堆栈,先将代码段(CS)内容压入堆栈,然后指令指针(IP)内容压入堆栈。

    6、从中断类型号乘4的主存地址中取出中断向量内容,送CS和IP。开始执行中断服务程序。当执行到中断服务程序的指令IRET时,IRET指令从堆栈中移出6个字节:IP两个字节,CS两个字节以及FLAGS两个字节。弹出的断点值(返回地址)送CS和IP寄存器,同时弹出标志寄存器,使IF和TF回到中断前的状态。写中断向量表 Old40DD?;保存旧的中断向量 New40PROC FAR;中断必须被定义为far程序;新的40号中断服务程序的主体 IRET;中断服务程序必须有IRET New40ENDP;初始化 Start:MOV AX,0;寻址0000H段 MOV DS,AX MOV AX,DS:40h*4+

    7、0H;得到40H号中断的偏移地址 MOV WORD PTR CS:old40,AX;保存旧的偏移地址 MOV AX,DS:40h*4+2H;得到40H号中断的段地址 MOV WORD PTR CS:old40+2,AX;保存旧的段地址 MOV CS:40h*4+0H,OFFSET new40;放入新的偏移地址 MOV CS:40h*4+2H,CS;放入新的段地址DOS系统功能调用 除了直接修改中断向量表主存内容之外,还可以调用DOS功能调用INT 21H的25H、35H功能来设置和读取中断向量。(1)中断服务程序入口地址获取 功能号:AH=35H 入口参数:AL=中断向量号 出口参数:ES:B

    8、X为中断服务程序入口地址(段基址:偏移地址)利用INT 21H获取40h号中断服务程序入口地址。MOV AX,3540H;利用DOS功能35H号 INT21H;获取原40H中断服务程序入口地址 MOV old40,BX;保存偏移地址 MOV old40+2,ES;保存段基地址中断服务程序入口地址设置 功能号:AH=25H 入口参数:AL=中断向量号,DS:DX为中断服务程序入口地址(段基址:偏移地址)设置新中断服务程序入口地址。PUSHDS MOV DX,OFFSET new40;取中断程序偏移地址 MOV AX,SEG new40;取中断程序段地址 MOV DS,AX MOV AX,2540

    9、H INT21H POP DS保护模式的中断处理 保护模式下使用中断描述符表(Interrupt Descriptor Table,IDT)来存储256个中断向量。中断类型号作为中断描述符表IDT中描述符的索引,取得一个描述符,从中得到中断/异常处理程序的入口地址。单核系统中只有一个中断描述符表IDT,多核系统中每个CPU核都有自己的IDT 中断描述符表寄存器IDTR指示IDT在内存中的位置。通过SIDT指令可以获得IDT的地址 中断描述符表IDT所包含的描述符只能是中断门、陷阱门和任务门门描述符格式中断和异常的处理过程 1、中断和异常响应 如果是异常处理,首先根据异常类型确定返回地址(CS:

    10、EIP),对于故障,CS:EIP指向引起故障的指令;对于陷阱,CS:EIP指向引起陷阱的指令的下一条指令。如果有出错代码,就把出错码压入堆栈。为了保证堆栈指针按双字边界对齐,16位的出错码以32位的形式压入,其中高16位的值为0。判断中断类型号要索引的门描述符是否超出IDT的界限。若超出界限,就触发通用保护故障。从IDT中取得对应的门描述符,分解出选择符、偏移量和属性字节,并进行权限相关的检查。根据门描述符类型,分别转入中断或异常处理程序。如果中断类型号所指示的门描述符是中断门或陷阱门,那么控制转移到当前任务的一个处理程序过程,并且可以变换特权级。跳转到中断服务程序(1)通过中断门或者陷阱门的

    11、跳转 使用中断门或陷阱门实现由中断/异常处理程序进行处理,不进行任务切换,运行环境在当前的任务中(2)通过任务门的跳转 如果以中断类型号为索引,在中断描述符中取出的是一个任务门描述符,那么控制将转移到新的任务。将任务门放在IDT表中,在响应对应的中断或异常时,可根据该任务门实现任务的自动调度。中断或异常处理后的返回 中断返回指令IRET用于从中断或异常处理程序中返回。该指令的执行根据任务嵌套标志NT位是否为1分为两种情形。由任务门转入中断或异常处理程序时,NT位被置1;由中断门或陷阱门转入中断或异常处理程序时,NT位被清0。NT位为1时,IRET执行的是嵌套任务的返回。当前TSS中的链接字段保

    12、存前一任务的TSS的选择符,取出该选择符进行任务切换就完成了返回。这种情形在通过任务门转入的处理程序返回时出现。NT位为0时,IRET执行的是当前任务内的返回。这种情形在通过中断门或陷阱门转入的处理程序返回时出现。可编程中断控制器8259 一片8259可以管理8个硬件中断源,最多支持64个中断源,包括1个主片和8个从片。每一个中断源的请求都可以通过程序进行屏蔽或者许可。在中断响应周期,8259提供中断源的中断类型号。8259有多种工作方式,可以通过编程来选择设置。外部引脚及功能(1)面向CPU的信号14个 D7D0:三态8位双向数据总线,与CPU数据总线连接,完成命令、状态信息的传送,中断类型

    13、号也是由数据缓冲器送到CPU。CS#:片选使能输入信号,低电平有效。WR#:接CPU的写选通信号(IOW#),写控制输入信号。RD#:接CPU的读选通信号(IOR#),读控制输入信号。A0:地址信号,接CPU的地址总线,用来对8259内部不同命令字进行选择。INT:中断输出引脚,高电平有效。主8259的INT与微处理器的INTR相连,从8259的INT接主片8259的IR引脚。INTA#:中断响应,与微处理器的INTA#引脚相连。(2)面向外设的信号8个 IR7IR0:8个中断请求输入信号,高电平或上升沿有效(可编程决定),用于接收外部设备(中断源)的中断请求。在电平触发方式下,IR引脚变为高

    14、电平,表示向CPU申请中断。CPU响应中断后,必须将IR恢复为低电平,否则会引起第2次重复中断。在边沿触发方式下,IR引脚从低电平变为高电平时,表示向CPU申请中断。对于外设来说,实现这种方式比较简单,没有重复中断的问题。(3)面向同类芯片的信号4个 CAS2CAS0:级联信号。由多片8259构成的主从结构中,只有一个主片,一个或多个从片,从片最多有8个。主片和从片的CAS2CAS0全部对应相连,在中断响应时主片发送从片的标识码(07)。在第2个INTA#脉冲期间,只有标识码匹配的从片才把中断类型码送至数据总线。SP#/EN#:主从/使能信号。当8259工作在缓冲方式时,SP#/EN#是输出信

    15、号,用作数据总线缓冲器的使能信号(EN#),即用它来控制数据收发器的工作;当8259工作在非缓冲方式时,SP#/EN#是输入信号,用来指明该8259是主片还是从片。SP#/EN#=0时,8259为从片;=1时,为主片。8259是否工作在缓冲方式也是由CPU编程来决定的。内部模块及功能(1)数据总线缓冲器 8位的双向三态缓冲器与CPU数据总线D7D0连接,完成命令、状态信息的传送,中断类型号也是由数据缓冲器送到CPU。(2)读写控制逻辑 接收来自CPU的读写命令,完成规定的操作。操作过程由CS#、A0、RD#、WR#等输入信号共同控制。在CPU写8259时,把数据送至相应的命令寄存器中。在CPU

    16、读8259时,将相应寄存器的内容输出到数据总线上。(3)级联缓冲/比较器 级联缓冲/比较器用于实现多个8259之间的级联,使得中断源由8个扩展至最多64个。(4)控制逻辑 控制逻辑按初始化设置的工作方式控制8259的全部工作。该电路可根据中断请求寄存器的内容和优先权判断结果向CPU发中断请求信号INT,并接受CPU发回的中断响应信号INTA#,使8259进入中断服务状态。(5)中断请求寄存器 IRR是与外部接口的中断请求线相连的寄存器,请求中断处理的外设通过IR0IR7向8259请求中断服务,并把中断请求信号锁存在中断请求寄存器中。有中断请求发生时,对应位置为1,同时有多个中断源发出中断请求时

    17、,IRR里面会有多个1,如当引脚IR0、IR1上有中断请求发生时,IRR的内容为03H。IRR的内容为0FH表示引脚IR0IR3上有中断请求输入,IR4IR7引脚上没有中断请求输入等。(6)中断屏蔽寄存器 IMR用来设置中断请求的屏蔽信息。当IMR中某一位设为1时,8259就屏蔽对应IR引脚发出的中断请求信号,不向CPU发送该中断源的中断请求。如设置IMR中断屏蔽字为FF,表示屏蔽所有8259芯片8个IR引脚的中断请求输入。(7)中断服务寄存器 ISR用于存放当前正在进行处理的中断源。ISR中Di为1表示IRi正在服务,为0表示没有被服务。ISR中置1的位在中断响应时由8259清除,也可以由C

    18、PU向8259发送中断结束命令来清除,具体的清除方式可以由程序控制。(8)优先权电路 检测到来自IR引脚的中断请求后,优先权电路负责检查该中断源的优先级,并与ISR中记录的中断(正在服务的中断)进行比较,以确定是否将这个中断请求送给CPU。假定它比正在服务中的中断具有更高的优先级,则PR就使INT线变为高电平,送给CPU,提出中断申请,并在中断响应时将它记入ISR的对应位中。如果它等于或低于正在服务中的中断优先级,则PR不为其提出申请,直到ISR中比它优先级高的位被清除。8259中断过程 单片8259的中断处理过程为:当一条或多条中断请求线IR0IR7变高时,设置相应的IRR位为1;然后PR对

    19、中断优先权和中断屏蔽寄存器的状态进行判断之后,如果某中断优先权最高且为允许中断状态,就向CPU发高电平中断请求信号INT,请求中断服务;要注意与NMI不同,CPU的可屏蔽中断INTR是电平触发的,因此INT请求时必须保持高电平直到中断申请被CPU识别为止。CPU响应中断时,送出中断响应信号INTA#。CPU响应中断时会发出两个INTA#。8259接到来自CPU的第一个INTA#信号时,将当前中断服务寄存器中相应位置位,并把IRR中相应位复位。同时,8259准备向数据总线发送中断类型码。在第二个INTA#负脉冲期间,中断类型码被读入CPU,如果是在AEOI(自动结束中断)方式下,在第二个INTA

    20、#负脉冲结束时8259会复位ISR的相应位。在非自动中断结束方式下,ISR相应位要由中断服务程序结束时发出的EOI命令来复位。8259的级联 主片的INT连接到CPU的INTR,而从片1和2的INT连接到主片的IR4和IR7。CPU的INTA#三片并接。并且三片8259的数据都并联到数据总线上,级联CAS0CAS2并联。3片8259能够支持的最大中断源数目为82+6=22 SP#/EN#输入为高时表示主片,故连接到+5V,同时2个从片的SP#/EN#连接到地。CPU的中断应答信号INTA#被连接到所有的8259上,主片收到INTA#后,确认是从它的IR4产生的。由于IR4连接在从片上,所以主片

    21、把100B(编号为4)送到CAS2CAS0上。从片1和从片2都收到了INTA#,它们检查CAS2CAS0上的信号与它自己的标示码是否一致。8259的编程 CPU的命令字分两类:初始化命令字(ICW1ICW4)和操作命令字(OCW0OCW4)。初始化命令字(Initialization Command Word,ICW)往往是在系统启动时,由初始化程序(BIOS或操作系统)来设置的。初始化命令字一旦设定,一般在系统工作过程中就不再改变。操作命令字(Operation Command Word,OCW)则是在计算机系统运行过程中,由CPU利用这些控制字来控制8259执行不同的操作,如中断屏蔽、中断

    22、结束、优先权循环和中断状态的读出和查询等。OCW可在初始化之后的任何时刻写入8259,并可多次设置。8259只有一个地址线A0,一般将A0与CPU的A0相连接,此时A0=0时就是偶地址,A0=1时就是奇地址。初始化命令字 8259有4个初始化命令字ICW1ICW4,用于对8259的初始状态进行设置。它的初始化过程必须按顺序连续完成,中间不允许插入OCW。(1)初始化命令字ICW1 ICW1应写入偶地址端口,即A00 8088系统中,使用单片8259,中断请求信号为上升沿触发,需要设置ICW4,该片8259的端口地址为20H和21H,则ICW1应为多少,请写出初始化程序。ICW1为:000100

    23、11B13H 设置ICW1的指令为:MOV AL,13H OUT 20H,AL(2)初始化命令字ICW2 在CPU响应中断时,8259在第2个INTA#有效时必须向CPU提供8位中断类型码。中断类型码由两部分构成,高5位T7T3是由CPU通过编程确定的,这就是初始化命令字ICW2,类型码的低3位,由8259内部电路自动产生,分别对应于8个中断源(IR0IR7)的编号。假设系统中使用单片8259,该片8259的端口地址为20H和21H,8个中断源的中断类型码为08H0FH(00001000B00001111B),则应如何初始化ICW2?初始化命令字ICW2应为:00001000b08H 设置IC

    24、W2的指令为:MOV AL,08H OUT 21H,AL(3)初始化命令字ICW3 只有当系统中有多片8259级联时(ICW1的SNGL位等于0)才需要设置ICW3,单片8259时不用设置ICW3。当多片8259级联时,ICW3有两种格式,主片和从片的ICW3格式不同。在PC系统中,使用两片8259,主片8259的端口地址为20H和21H,从片8259的端口地址为0A0H和0A1H,从片8259的INT连接到主片的IR2上。则应如何初始化ICW3?主片的IR2接从片,则主片ICW3为:00000100B=04H,从片ICW3为:00000010B=02H。MOV AL,04H;主片ICW3初始

    25、化 OUT 21H,AL MOV AL,02H;从片ICW3初始化 OUT 0A1H,AL(4)初始化命令字ICW4 当ICW1中的D01时,初始化8259时需要写入ICW4。ICW4写入奇地址端口(即A01)D4:SFNM(Special Fully Nested Mode)位等于0时,工作在普通全嵌套方式;等于1时,8259工作于特殊全嵌套方式。普通全嵌套方式是8259初始化后自动进入的优先级管理方式。该方式下,IR引入的中断具有固定的优先级:优先级从IR0IR7依次降低。若当前正在处理IRi中断,PR允许比IRi优先级高的中断进行中断嵌套。在特殊全嵌套方式下,当微处理器正在处理某一级中断

    26、请求时,不但允许较高级的中断实现嵌套,也允许平级中断实现嵌套。特殊全嵌套通常用在8259级联使用的场合,主片工作在特殊全嵌套方式,从片工作在普通全嵌套方式。D3:BUF位等于1时,8259工作于缓冲模式,SP#/EN#管脚作为输出,控制数据总线传输方向。D2:M/S只有在BUF位=1即缓冲模式才有意义,这时主片、从片的选择要靠CPU来指定。D1:AEOI=l时,为中断自动结束方式。在这种方式下,当第2个中断响应负脉冲INTA#结束时,将中断服务寄存器ISR的相应位清零,不需要另外发送EOI(End of Interrupt)。这是最简单的中断结束方式。但是这种方式的使用是有前提的,即在该中断结

    27、束之前不会产生较低级的中断。在非自动结束方式下,即普通中断结束方式下,中断处理程序的IRET之前,微处理器需向8259发送一个普通中断结束命令EOI(通过写OCW2实现),使ISR中最高优先级的置1位清除,以结束当前正在处理的中断。在循环优先级方式下的中断结束处理时,8259无法用固定的优先级顺序判断该将哪一级中断结束,这时就不能用普通EOI结束中断。这时必须采用特殊中断结束方式。在特殊中断结束命令中,指出结束中断处理的ISRi位的i值。通过程序写OCW2完成。在级联系统中,一般不使用中断自动结束方式,而用非自动结束方式。不管是使用普通中断结束方式,还是使用特殊的中断处理方式,在中断服务程序结

    28、束时,都必经发出两次中断结束命令,一次是对主片,一次是对从片。D0:PM=0时,表示8259用于8080/8085等8位CPU机组成的系统。PM=1时,表示8259用于8088/8086、Pentium等16、32位CPU组成的系统。一般应设置PM=1。8086系统中,假定包含两片8259。主片地址为20H和21H,从片的地址为A0H和A1H;两片都工作在特殊嵌套方式、非缓冲模式、采用非自动中断结束。试写出主片和从片的ICW4初始化程序。主片和从片的ICW4均为00010001B=11H。MOV AL,11H OUT 21H,AL OUT 0A1H,AL操作命令字(1)中断屏蔽操作命令字OCW

    29、l OCWl用来实现对中断源的屏蔽功能,OCWl的内容被直接写入IMR屏蔽寄存器。OCW1写入奇地址端口(即A01),8259的端口地址为20H和21H,试编写程序屏蔽IR2、IR5两个中断源。OCW1=00100100B=24H MOV AL,24H OUT 21H,AL(2)优先级循环方式和中断结束方式操作命令字OCW2 OCW2有两个功能:设置中断结束方式和优先级循环方式,要求写入偶地址端口(A0=0)。最高3位一共8种组合:000B:在自动中断结束方式下,不使用循环优先级。优先级顺序始终为IR0(最高)、IR1、IR2、IR3、IR4、IR5、IR6、IR7(最低)。001B:普通EO

    30、I命令(不使用L2L0)。清除ISR中优先级最高的位。010B:保留。011B:特殊EOI命令(使用L2L0)。清除ISR中的某一位(由L2L0决定)。100B:在自动中断结束方式下,使用循环优先级。某一个IR请求被响应后,它自动变为最低优先级。例如,IR2请求被响应后,优先级变为:IR3、IR4、IR0、IR1、IR2。101B:普通EOI命令(不使用L2L0),使用循环优先级。和3位为000B相同,但优先级自动循环。110B:指定L2L0为最低优先级。111B:特殊EOI命令(使用L2L0),使用循环优先级。和3位为001B相同,但优先级自动循环。8259地址为20H和21H,编写程序完成

    31、如下操作:清除IR2对应的ISR:设置IR4为最高优先级 清除IR2对应的ISR,应该向偶地址即20H,写入OCW2控制字。OCW2控制字为:01100010B=62H MOV AL,62H OUT 20H,AL 设置某IRi为最高优先级,只需要采用循环优先级,设置前一个IRi-1为最低优先级即可。因此指定IR3为最低优先级,OCW2=11000011B=0C3H,那么此时优先级由高到低的顺序为:IR4、IR5、IR6、IR7、IR0、IR1、IR2、IR3。MOV AL,C4H OUT 20H,AL(3)特殊屏蔽方式和中断查询方式操作命令OCW3 OCW3要求写入偶地址端口(A0=0),包含

    32、3个功能:设置和撤消特殊屏蔽方式;执行中断查询方式;读出ISR或IRR寄存器的内容。特殊屏蔽方式 8259可以通过OCW1命令将中断屏蔽寄存器IMR的相应位置“1”,实现普通屏蔽方式。此时当IR引脚上有中断请求产生时,只有IMR相对应的位不为1时,中断请求才被送入。对于固定优先级情况,只允许高级中断打断当前的服务。如果要允许优先级低的中断进入,则需要采用特殊屏蔽方式。在特殊屏蔽方式下,8259用OCW1写入屏蔽寄存器时,只有屏蔽位等于1的中断源才会被屏蔽,而其它的屏蔽位等于0的中断源发出的请求都会被响应,即使这些中断源的优先级小于ISR中正在服务的优先级。查询命令 多于64个中断源等情况,CP

    33、U可以利用查询命令来获取中断信息。该查询字可以通过软件译码,当发现有效中断时,则转到中断服务程序的入口地址。将OCW3=00001100B=0CH写入8259偶地址(A0=0)执行查询命令后,这个操作被8259当作INTA#应答,有中断请求时设置ISR中的响应位。读取IRR或ISR 8259内部有3个寄存器(IRR、ISR、IMR)可供CPU读出,CPU在发读命令之前,须先指定读取哪个寄存器,然后再发IN指令,才能读取IRR和ISR中的内容。编写程序段读取8259中IRR和ISR的值。OCW3=00001010B=0AH或00001011B=0BH写入8259偶地址,然后对8259执行读操作(

    34、A0=0)可以获得IRR和ISR值。MOVAL,0BH;读取ISR寄存器 OUT20H,AL INAL,20H MOVAL,0AH;读取IRR寄存器 OUT20H,AL INAL,20H8259初始化举例 要求:两片8259级联使用,从片连接在主片的IR2引脚,主片端口地址为20H,21H,从片端口地址为A0H,A1H,要求主片中断向量号设置为20H27H,从片中断向量号设置为28H2FH。中断向量采用边沿触发的方式,主片采用特殊嵌套方式,从片采用普通嵌套方式,仅仅开启定时中断,屏蔽其他中断。MOVAL,11H OUT20H,AL;主8259,ICW1 OUT0A0H,AL;从8259,ICW

    35、1 MOVAL,020H;IRQ0 对应中断向量 0 x20 OUT021H,AL;主8259,ICW2 MOVAL,028H;IRQ8 对应中断向量 0 x28 OUT0A1H,AL;从8259,ICW2 MOVAL,04H;IR2 对应从8259 OUT021H,AL;主8259,ICW3 MOV AL,02H;对应主8259的 IR2 OUT0A1H,AL;从8259,ICW3 MOV AL,11H OUT021H,AL;主8259,ICW4 MOV AL,01H OUT0A1H,AL;从8259,ICW4 MOV AL,11111110B;仅仅开启定时器中断 OUT021H,AL;主8

    36、259,OCW1 MOV AL,11111111B;屏蔽从8259所有中断 OUT0A1H,AL;从8259,OCW1 8259A的IRQ0(向量号为08H)中断请求来自定时器8253,每隔55ms产生一次 本程序的08H号中断服务程序,每次中断显示一串信息,显示10次 用内存单元(共享变量)在主程序与外部中断服务程序之间传递参数:中断次数 显示信息也安排在共同的数据段中。数据段 intmsgdb A 8259A Interrupt!db 0dh,0ah,0 counterdb 0;保存原中断向量mov ax,3508h int 21h push bx;保存偏移地址 push es;设置新中断

    37、向量 cli;关中断 push ds mov dx,offset new08h mov ax,seg new08h mov ds,ax mov ax,2508h int 21h pop ds in al,21h push ax and al,0feh;允许IRQ0 out 21h,al mov counter,0;设置中断次数初值 sti;开中断主程序中 start1:cmp counter,10jb start1;中断10次退出cli;主程序退出部分pop axout 21h,alpop dxpop dsmov ax,2508hint 21hstimov ax,4c00hint 21h中断服

    38、务程序 new08hprocsti;开中断push ax;保护寄存器push bxpush dsmov ax,datamov ds,ax;设置数据段DS;中断处理 inc counter mov si,offset intmsg;显示信息 call dpstri;退出部分 mov al,20h out 20h,al pop ds;恢复寄存器 pop bx pop ax Iret;中断返回 new08hendp;显示字符串子程序 dpstriprocpush axpush bx dps1:lodsbcmp al,0jz dps2 mov bx,0mov ah,0ehint 10hjmp dps1 dps2:pop bxpop axret dpstriendpmov bx,0mov ah,0ehint 10hjmp dps1 dps2:pop bxpop axret dpstriendp

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:汇编与接口-中断技术详解-精课件.pptx
    链接地址:https://www.163wenku.com/p-3209150.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库