您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 微机接口--中断控制使用.
中断控制器第7章12第7章中断控制接口教学重点8088CPU的中断系统8259A的中断工作过程和工作方式中断服务程序的编写37.18088中断系统8088的中断系统采用向量中断机制一共可处理256个中断源,中断向量编号为0~255,用以区别不同的中断。借助专用的中断控制器Intel8259A对系统中的可屏蔽中断资源(INTR)进行扩充和管理,8259A的功能有:扩充系统的可屏蔽中断资源(每片可管理8个中断,级联后最多可管理64个中断)实现中断优先级比较实现中断源的识别(通过向总线送中断矢量)47.1.18088的中断类型中断逻辑INTO指令单步中断除法错误INTn指令CPU8259A中断控制器IR0IR1IR2IR3IR4IR5IR6IR7来自外设的中断源-INTA可屏蔽中断申请INTR不可屏蔽中断申请可屏蔽中断源不可屏蔽中断源内部中断INT3指令3n401NMI中断2不可屏蔽中断源外部中断58088的中断分类内部中断——内部机制产生除法错中断(0号)——除运算结果溢出时产生指令中断(n号)——执行intn指令后产生(操作码CDH)断点中断(3号)——执行int3指令(单字节指令操作码CCH)用于在调试中设置断点,程序遇断点则中断溢出中断(4号)——执行into指令,且前面运算有溢出(OF=1)时产生单步中断(1号)——TF标志置1后,每执行一条子指令将发生一次外部中断——外部引脚触发非屏蔽中断(外设提供向量号)——触发INTR引脚产生可屏蔽中断(2号)——触发NMI引脚产生61.内部中断内部中断是由于8088内部执行程序出现特殊情况而引起的中断除法错中断:向量号为0指令中断(intn):向量号为n断点中断(int3):向量号为3溢出中断(into):向量号为4单步中断:向量号为1内部中断的中断向量号已由Intel公司确定72.外部中断外部中断是由于8088外部通过CPU引脚提出中断请求而引起的中断非屏蔽中断(NMI):向量号为2外部通过非屏蔽中断NMI请求,必须响应非屏蔽中断主要用于处理系统的意外或故障(如奇偶校验或协处理器运算错误等)可屏蔽中断(INTR):向量号由中断控制器提供外部通过可屏蔽中断INTR请求,由标志位IF控制是否响应;响应时将产生有效的–INTA信号可屏蔽中断主要用于外设中断请求(请求交换数据等服务)IF=0可屏蔽由INTR引脚引发的中断8中断标志IF的状态IF=0:可屏蔽中断不会被响应(禁止中断,关中断,中断屏蔽)系统复位时IF=0任何一个中断被响应,将使IF=0执行指令CLI,可使IF=0IF=1:可屏蔽中断会被响应(允许中断,开中断,中断开放)执行指令STI,可使IF=1执行指令IRET后,IF将恢复为中断前的状态(即IF=1)明确IF标志的状态是关键97.1.28088的中断响应过程CPU查询各中断的先后顺序,决定了各中断源的优先级别:软件中断除法错中断指令中断溢出中断非屏蔽中断可屏蔽中断单步中断高低108088的中断响应过程NMIN软件中断INTRTF=1中断响应周期读中断向量号下条指令现行指令IF=1NNNNYYYYY执行中断服务118088的中断响应过程(续)Y还有NMITEMP=1标志寄存器入栈TEMP=TF,IF=TF=0CS:IP入栈获取中断向量执行服务程序弹出CS:IP弹出标志寄存器返回被中断程序(1)(2)(3)(4)(5)NNY(6)单步中断标志暂存128088的中断响应过程(续)8088各种中断源的优先权,实际上是指被识别的先后顺序多种中断同时请求时,最先响应的则可能是单步中断或NMI中断137.1.38088的中断向量表4B4B中断向量表1KB3FFH0H0号中断向量IPCS弄清几个概念:中断向量号N(中断类型号)中断向量(中断服务程序的入口地址)中断向量表中断向量存放的首址:N×4以下详述148088的中断向量和中断向量表中断向量号——区别不同中断源的编号0~255,也称中断向量号。中断向量——指示中断服务程序的入口,该地址包括:偏移地址IP、段地址CS。每个中断向量的低字是偏移地址、高字是段地址,需占用4个字节(低对低,高对高)。中断向量表——8088微处理器从物理地址000H开始到3FFH(1KB),依次安排256个中断向量。所占用的1KB区域,称中断向量表。N号中断向量存放的首地址——N×4157.2内部中断服务程序编写内部中断服务程序与编写子程序类似利用过程定义伪指令PROC/ENDP第1条指令通常为开中断指令STI最后用中断返回指令IRET通常采用寄存器传递参数主程序需要调用中断服务程序使用前,需要重新设置中断向量(入口地址)利用INTn指令调用中断服务程序16例7.1内部中断服务程序编写:80H号中断服务程序功能:通过BIOS功能调用INT10H,显示以“0”结尾的字符串。入口参数:DS:DX存字符串缓冲区首地址(段地址:偏移地址)。17数据段intoffdw?;用于保存原中断向量将来恢复intsegdw?;用于保存原中断向量将来恢复intmsgdb‘AInstructionInterrupt!’db0dh,0ah,0;要显示的信息例7.1以下分段介绍程序18保存中断向量movax,3580h;读出原中断向量int21hmovintoff,bx;保存偏移地址movintseg,es;保存段基地址例7.119设置中断向量的做法pushdsmovdx,offsetnew80hmovax,segnew80hmovds,axmovax,2580h;设置新中断向量int21hpopds例7.120调用中断服务程序movdx,offsetintmsgint80h;中断调用例7.1注意比较指令:int/call21主程序结束movdx,intoffmovax,intsegmovds,axmovax,2580h;恢复原中断向量int21hmovax,4c00h;返回DOSint21h例7.1屏幕显示:AInstructionInterrupt!22new80hprocsti;开中断,允许中断嵌套pushax;保护现场pushbxpushsi例7.1中断服务子程序23显示字符串movsi,dxnew1:moval,[si];取显示字符cmpal,0;判是否串尾jznew2movbx,0;调BIOS中断movah,0eh;子功能号int10hincsijmpnew1例7.124退出中断服务程序new2:popsi;恢复现场popbxpopaxiret;中断返回new80hendp例7.125用int21h子功能访问中断向量AH=25——设置中断向量入口参数:ds:dx=中断向量,al=中断向量号AH=35——读取中断向量入口参数:al=中断向量号出口参数:bx:es=中断向量设置中断向量:movdx,intoffmovax,intsegmovds,axmovax,2580hint21h读取中断向量:movax,3580hint21hmovintoff,bxmovintseg,es26直接访问中断向量(以int80h为例)设置中断向量:pushdsxorax,axmovds,axleabx,80H*4movwordptrds:[bx],intoffincbxincbxmovwordptrds:[bx],intsegpopds读取中断向量:pushdsxorax,axmovds,axleabx,80H*4movintoff,wordptrds:[bx]incbxincbxmovintseg,wordptrds:[bx]popds277.38259A中断控制器Intel8259A是可编程中断控制器(PIC)。可配合CPU(I8080/85、I8086/88/286/386等)管理可屏蔽中断。8259A的基本功能:1片8259A可以管理8级中断,经级联最多可扩展至64级每一级中断都可单独被屏蔽或允许在中断响应周期,可提供相应的调用指令(配合I8080/85)或中断向量号(配合I8086/88/286/386)8259A设计有多种工作方式,通过初始化编程进行设置287.3.18259A的内部结构和引脚D7~D0-INTAINT中断请求寄存器中断屏蔽寄存器数据总线缓冲器IR0IR7读/写控制逻辑级联缓冲器比较器-RD-WRA0-CSCAS0CSA1CAS2-SP/-EN优先权判别电路中断服务寄存器控制逻辑291.中断控制中断请求寄存器IRR记录中断请求(IR0~IR7)Di位为1表示相应引脚有中断请求;为0表示无请求中断服务寄存器ISR记录中断服务(IR0~IR7)Di位为1表示相应中断正在服务中;为0表示位在服务中断屏蔽寄存器IMR记录中断屏蔽(IR0~IR7)Di位为1表示相应中断被屏蔽(禁止);为0表示允许302.与处理器接口-CSA0-RD-WR功能00100110000101010×111×××写入ICW1、OCW2和OCW3写入ICW2~ICW4和OCW1读出IRR、ISR和查询字读出IMR数据总线高阻状态数据总线高阻状态323.中断级连8259A可以级连,1个主片最多可以级连8个从片,级连时的连接方法:主片——级连线CAS0~CAS2连至每个从片的CAS0~CAS2,输出被选中的从片编号,INT线连至CPU的中断请求输入端INTR从片——中断请求信号INT连至主8259A的一个中断请求输入端IRx;主、从片的指定:在非缓冲方式下,通过引脚-SP/-EN来指定:接地指定该片充当从片(-SP=0);反之则该片充当主片(-SP=1)。在缓冲方式下,通过软件控制字来指定,引脚-SP/-EN另作它用(缓冲器使能)337.3.28259A的中断过程CAS0~CAS2D0~D7-SP/-ENIR0~IR7CPU响应周期8259A工作波形INT第1个总线周期T1T2T3T4ALECLK第2个总线周期T1T2T3T4第1个-INTA前保持高电平-INTA-LOCK中断向量主片输出级联信号从片接收347.3.38259A的工作方式普通全嵌套方式特殊全嵌套方式自动循环方式特殊循环方式优先权固定方式优先权循环方式设置优先权方式普通中断结束方式特殊中断结束方式自动中断结束方式非自动中断结束方式结束中断方式中断屏蔽方式普通屏蔽方式特殊屏蔽方式中断触发方式边沿触发方式电平触发方式数据缓冲方式缓冲方式非缓冲方式与CPU配合方式与8080/8085CPU配合与8086/8088CPU配合级连方式级连不级连351、与CPU的配合方式与8080/8085CPU配合——中断响应时,-INTA信号3次有效,8259A送CALLXXXXH指令(3B)的机器代码到数据总线;与8086/8088CPU配合——中断响应时,-INTA信号2次有效,8259A送相应的中断向量号(1B)到数据总线。8080/85CPU8259A8086/88CPU8259ACALLXXXXH(3B)中断向量号(1B)-INTAINTR-INTAINTR3个2个362、级连方式不级连——只用1片,如PC/XT级连——可使用2~9片,如PC/AT(2片)-INTAINTRIR0IR7IR7IR0CAS0~CAS2=010INTINTD0~D7373、数据缓冲方式非缓冲方式-SP/-EN引脚作为输入端在8259A级连时,用它选择该芯片充当主片或从片缓冲方式对8259A的数据线(输出中断向量)加缓冲器予以隔离和驱动-SP/-EN引脚作为输出端,输出允许信号,用以关闭或开启缓冲器385、中断触发方式边沿触发方式中断请求输入端出现上升沿为有效的中断请求信号电平触发方式中断请求端出现高电平为有效的中断请求信号394、设置优先权方式普通全嵌套方式8259A的中断优先权顺序固定不变,从高到低依次为:IR0、IR1
本文标题:微机接口--中断控制使用.
链接地址:https://www.777doc.com/doc-2435749 .html