CH 微型计算机中断系统_第1页
CH 微型计算机中断系统_第2页
CH 微型计算机中断系统_第3页
CH 微型计算机中断系统_第4页
CH 微型计算机中断系统_第5页
已阅读5页,还剩142页未读 继续免费阅读

下载本文档

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

文档简介

会计学1CH微型计算机中断系统2、中断的定义CPU正常运行程序时,由于CPU的内部事件或外设请求,引起CPU暂时中断正在运行的程序,转去执行相应的外设(或内部事件)的服务程序,服务程序执行完后又返回到原先的程序继续执行,这一过程称为中断。中断流程如下页图所示第1页/共147页第2页/共147页3、使用中断的好处提高效率CPU与外设同时工作,当外设的数据准备好则向CPU发中断请求,CPU响应处理。CPU可与多个外设同时工作,从而加快数据的传送速度、提高CPU的效率。实现实时处理现场各种信息,可随时发出中断请求故障自行处理将计算机在运行的过程中常遇到的意外情况,如:电源突跳,存储器出错,运算溢出等设计成中断,计算机可利用中断系统自行处理或告警。第3页/共147页4、与中断相关的基本概念中断源中断类型号中断请求中断响应中断服务程序中断返回中断向量中断向量表中断优先级中断嵌套中断屏蔽第4页/共147页5、中断系统的基本功能(1)中断响应,中断服务,中断返回,中断屏蔽;(2)中断优先级排队;(3)中断嵌套。注意:这些功能是由软件与硬件共同构成的系统完成的。本章讨论与8086/8088CPU相配合的中断系统第5页/共147页

二、中断的分类(中断源的分类)8086/8088可以处理256种不同的中断。两类:内部中断和外部中断。中断源示意图如下图:8259A可屏蔽中断请求中断逻辑INTO指令INTn指令除法出错单步(TF=1)非屏蔽中断请求8086/8088CPUNMIINTR内部中断外部中断可屏蔽中断非屏蔽中断第6页/共147页1、外部中断(硬件中断)不可屏蔽中断NMI不能用软件屏蔽,CPU必须响应;上升沿触发;中断的类型号为2。可屏蔽中断INTRIF=1,CPU响应中断;IF=0,CPU不响应;高电平触发,高电平维持到CPU响应中断时结束;中断类型号由中断控制器8259A或硬件电路提供。第7页/共147页2、内部中断(软件中断)由三种情况引起:由软中断指令INTn引起

INTn指令,类型号n(0-255)。由CPU运算错误引起除法错中断:类型号0溢出中断:类型号4,由INTO指令引起的中断;第8页/共147页2、内部中断(软件中断)(续)由调试程序debug设置的中断单步中断:类型号1,TF=1时产生(当前指令需执行完);Debug状态下的T命令执行时产生;断点中断:类型号3,INT3指令引起的中断,属于软件中断Debug状态下由G命令设置,相当于是在程序的某个位置设置了一条INT3。第9页/共147页引脚

INTR、INTA#、NMI指令

INTn、INTO、IRET三、与中断有关的引脚和指令第10页/共147页

不同类型的中断处理过程略有不同,本节所介绍的内容主要针对可屏蔽中断的处理过程。可屏蔽中断处理过程步骤:中断请求中断响应保护现场转入执行中断服务子程序恢复现场中断返回9-2中断处理过程第11页/共147页1、CPU响应可屏蔽中断的条件(1)外设提出中断申请;(2)本中断未被中断控制器屏蔽;(3)本中断优先级最高;(4)CPU允许中断;一、CPU响应可屏蔽中断过程第12页/共147页2、CPU响应可屏蔽中断的过程CPU在每条指令的最后一个T周期,检测INTR,若为高电平,且IF=1,则CPU响应中断。响应过程中自动依次完成以下工作:CPU向外设发两个/INTA,外设收到第2个/INTA后,立即通过数据线给CPU送中断类型号。CPU从数据线上读取中断类型号将Flags内容入栈保护现行程序的控制标志及其运行结果产生的状态标志。CPU响应中断的过程第13页/共147页关中断(清IF和TF)为了防止在进入中断处理,但并未执行中断程序这段时间内又响应新的中断。保护断点将当前指令的下一条指令的CS和IP入栈,使中断处理完成后能正确的回到原程序处继续执行。转入相应的中断服务子程序;中断返回从堆栈中弹出断点的地址(IP和CS)和Flags的内容,返回主程序的断点处,继续执行主程序。CPU响应中断的过程第14页/共147页确定中断源的方法:查询中断和矢量中断。查询中断:一种软件查询法,中断响应后,启动中断查询程序,依次查询哪个外设申请了中断,检测以后,转到此设备预先设置的中断服务程序处执行。这种中断处理过程称为查询中断。

特点:速度慢,且后检测的设备服务机会少。矢量中断:中断响应后,外设中断接口电路将中断类型号送给CPU,CPU根据中断类型号找到对应的中断服务程序的入口地址送入CS或IP,然后转入相应的中断服务程序处执行。这种中断处理过程称为矢量中断,也叫向量中断。

特点:速度快。二、中断向量表第15页/共147页1、中断向量表中断向量:中断服务程序的入口地址。中断向量表:中断服务程序的入口地址的内存表。8086在存储器最低的1KB(00000H~003FFH)空间内,存放256个中断的中断向量。每个类型号的中断向量占4字节

高2字节存放段基址,低2字节存放偏移地址按照中断类型号的顺序依次将其中断向量存在1K的内存表中,格式如下:

第16页/共147页中断类型号n与中断向量的地址关系:n×4=中断向量地址(4n和4n+1)→IP

(4n+2和4n+3)→CS第17页/共147页【例】某中断的类型号为68H,中断的操作过程如下:步骤分析:取中断类型号68H;计算中断向量地址68H*4=1A0H;取中断入口地址的偏移地址送入IP,段地址送入CS;转向中断服务程序;中断返回到INT68H指令的下一条指令。第18页/共147页类型69H中断向量A0002050类型67H中断向量中断处理程序STIPUSHDS…..….IRET2050INT68HMOVAX,00:19C0:1A00:1A20:1A4A000IPCSA000:2050向量地址=68H×4=1A0H①②③④⑤中断操作过程图示第19页/共147页2、中断向量(中断入口地址)的设置概念将中断服务程序的入口地址置入中断类型号所对应的中断向量表中。两种方法用指令设置用DOS功能调用设置第20页/共147页用指令设置中断服务程序的入口地址表MOVAX,0MOVES,AXMOVBX,N*4MOVAX,OFFSETINTRADMOVES:[BX],AXMOVAX,SEGINTRADMOVES:[BX+2],AXSTI

…..INTRAD:PUSHAX

…..IRETPUSHDSMOVAX,0MOVDS,AXMOVBX,N*4MOVAX,OFFSETINTRADMOV[BX],AXMOVAX,SEGINTRADMOV[BX+2],AXPOPDSSTI

…..INTRAD:PUSHAX

…..IRET第21页/共147页利用DOS功能调用设置中断服务程序的入口地址表第22页/共147页

……

PUSHDSMOVAX,SEGINTRAD;

MOVDS,AXMOVDX,OFFSETINTRADMOVAL,NMOVAH,25HINT21H

POPDS

……利用DOS功能调用设置中断服务程序的入口地址表第23页/共147页注意:为了避免直接使用中断向量的绝对地址,一般利用DOS功能调用INT21H设置或取出中断向量。应用时一般在设置自己的中断向量时,应先保存原中断向量,再设置新的中断向量,在程序结束前恢复原中断向量。第24页/共147页【例】利用DOS功能设置中断向量和取中断向量。

MOVAL,N;取中断向量,并存中断向量

MOVAH,35HINT21H

PUSHESPUSHBXPUSHDSMOVAX,SEGINTRAD;设中断向量

MOVDS,AXMOVDX,OFFSETINTRADMOVAL,NMOVAH,25HINT21HPOPDS……

POPDX;恢复原中断

POPDSMOVAL,NMOVAH,25HINT21H

……INTRAD:……IRET第25页/共147页3、中断类型号的获取矢量中断中,中断入口地址依赖中断类型号,中断型号获取方法:对于专用中断:除法出错、单步中断、不可屏蔽中断、断点中断和溢出中断,由CPU分别提供中断类型号0~4;对于用户自己确定的软件中断INTn,类型号由n决定;对于INTR引脚上的中断:由硬件电路设计产生中断类型号可用8259A获取中断类型号第26页/共147页三、中断服务子程序1、中断服务子程序特点为”远”过程(类型为FAR)要用IRET指令返回2、中断服务子程序一般结构形式保护现场(PUSHreg’s)

开中断(STI)

进行中断处理关中断(CLI)

恢复现场(POPreg’s)

中断返回(IRET)

第27页/共147页【总结】中断处理过程中软件及硬件各自完成的功能归纳1.主程序中的初始化(1)设置中断向量(2)设置8259的中断屏蔽寄存器的中断屏蔽位(3)设置CPU中断允许标志位IF(开中断STI)2.硬件(外设接口)和CPU自动完成(1)外设向CPUINTR端发出请求(2)CPU发两个/INTA给外设(3)CPU取中断类型号n(4)CPU自动将PSW,CS,IP内容压入堆栈第28页/共147页(5)清除IF,TF,禁止外部中断和单步中断(6)从中断向量表中取(4n)地址中内容→IP,取(4n+2)地址中内容→CS(7)转向中断服务子程序3.中断服务子程序【注意】(1)对重复前缀的指令作为一条处理。(2)遇到STI和IRET,要执行两条后,再响应中断。(3)CPU自动清除IF,TF位,在中断服务程序不允许产生中断,如需要则必须开中断。第29页/共147页设计一个能接收一个中断源的外围电路,用8088CPU。【例】第30页/共147页

主程序初始化将中断服务程序的入口地址装入中断向量表

……

PUSHDSMOVDX,OFFSETINTER1

MOVAX,SEG

INTER1

MOVDS,AXMOVAL,80HMOVAH,25HINT21HPOPDS……可屏蔽中断处理程序INTER1PROCFARPUSHAX;保护现场STI;开中断以便;允许多重中断...;中断处理POPAX;恢复现场IRET;返回主程序INTER1ENDP

第31页/共147页CPU处理中断的一般原则:多个中断源同时向CPU请求中断,CPU由中断优先级排队决定,先响应优先级高的中断请求。级别不同的中断同时发生时,由高到低依次处理。级别相同的中断同时发生时,按事先设定的次序处理当CPU正在处理中断时,有更高优先级别的中断请求,并且IF=1,CPU能响应更高级别的中断请求,而屏蔽掉低级的中断请求,形成中断嵌套,或称为多重中断。9-3中断优先级和中断嵌套第32页/共147页1、不同级别中断优先级顺序计算机中的中断源,优先级从高到低的顺序如下:(1)内部中断(除法错,INTO,INTn)(2)NMI(3)INTR(4)单步中断一、中断优先级第33页/共147页2、可屏蔽中断的优先级设定方法软件查询中断优先级查询程序的次序,决定了外设优先级别的高低,先测试的中断源优先级别最高,依次下降。硬件查询优先方式——菊花链法矢量中断优先级设置一般是采用中断优先级控制器(如8259A)。第34页/共147页可屏蔽中断的优先级设定--软件查询中断优先级≥1中断请求寄存器PORTINTR0INTR1INTR2INTR3INTR4INTR5INTR6INTR7CPUINTR缓冲器.....D7~D0译码第35页/共147页软件查询中断优先级0号申请中断1号申请中断保护现场中断处理程序...恢复现场中断返回0号外设服务程序1号外设服务程序YYNN中断服务子程序处理流程第36页/共147页移位法XORAL,ALINAL,PORT

RCRAL,1

JCINTR0

RCRAL,1JCINTR1

……INTR0:……

……INTR1:……软件查询中断优先级中断服务子程序片断测试法XORAL,ALINAL,PORT

TESTAL,01H

JNZINTR0

TESTAL,02HJNZINTR1

……INTR0:……

……INTR1:……第37页/共147页可屏蔽中断的优先级设定--硬件查询优先方式(菊花链法)第38页/共147页矢量中断优先权控制器的原理图可屏蔽中断的优先级设定--矢量中断优先级中断服务寄存器中断类型寄存器优先级管理逻辑中断请求寄存器中断屏蔽寄存器由中断请求决定IR0IR1IR2IR7第39页/共147页中断嵌套:当CPU正在处理中断时,有更高优先级别的中断请求,并且IF=1,CPU能响应更高级别的中断请求,而屏蔽掉低级的中断请求以8259A为例介绍,8259A在完全嵌套优先级工作方式下,中断优先级的顺序为:IR0、IR1……IR7。二、中断嵌套第40页/共147页下面是一个中断嵌套的例子第41页/共147页【说明】主程序必须有开中断指令,使IF=1,才能响应中断。进入中断处理程序时,系统自动关中断,在中断服务程序中必须有STI开中断指令,这样才可以允许其它中断进入实现中断嵌套。中断结束返回前要有EOI中断结束命令,用来清除中断服务寄存器中的对应位,允许低级中断进入。最后有中断返回指令IRET,使程序返回到被中断的程序的断点处。第42页/共147页中断处理程序中如果没有STI指令,中断处理中不会受其它中断影响,在执行IRET指令后,因为自动返回中断断点及中断标志寄存器PSW的内容,当IF的值为1,系统便能开放中断。一个正在执行的中断处理程序,中断服务寄存器相应位置“1”,在开中断(IF=1)的情况下,能够被优先级高于它的中断源中断。但如果中断处理中提前发出了EOI命令,则清除了正在执行的中断服务,中断服务寄存器置“1”位被清0,允许响应同级或低级的中断申请。但这种情况要尽量避免,防止重复嵌套,使优先级高的中断不能及时服务,因此一般EOI结束命令放在中断返回指令IRET前面。第43页/共147页设系统有两个外部中断源,类型号分别是40H、41H。试用链式结构实现8086中断系统的扩展。要求:a.画出实际电路。b.编写程序,实现不同的中断能转入相应的服务程序入口处。【例】第44页/共147页解:a.画出实际电路第45页/共147页...MOVDX,0FFSETINTER1MOVAX,SEGINTER1

MOVDS,AXMOVAL,40H

MOVAH,25H

INT21H...b.主程序

MOVDX,0FFSETINTER2MOVAX,SEGINTER2

MOVDS,AXMOVAL,41H

MOVAH,25H

INT21H第46页/共147页中断服务程序INTER1PROCFARPUSHAX;保护现场

STI

;开中断,以实现多重中断....POPAX;恢复现场IRETINTER1ENDPINTER2PROCFARPUSHAX;保护现场

STI

;开中断,以实现多重中断....POPAX;恢复现场IRETINTER2ENDP第47页/共147页主要内容:功能和引脚内部结构8259A的中断管理方式8259A的编程方式8259A的中断级联及举例9-4可编程中断控制器8259A第48页/共147页1、主要功能(1)具有8优先级控制,通过级联可以扩展到64级优先级控制;(2)每一级中断可由程序单独屏蔽或允许;(3)可提供中断类型号传送给CPU;(4)可以通过编程选择多种不同工作方式。一、功能和引脚第49页/共147页2、引脚第50页/共147页D7~D0:双向数据线,三态,与系统的数据总线相连。IR7~IR0:外设的中断请求信号输入端,输入;中断级联时,连接8259A从片INT端。

RD#:读命令信号,输入,低电平有效,用来控制

数据由8259A读到CPU。WR#:写命令信号,输入,低电平有效,用来控制

数据由CPU写到8259A。CS#:片选信号,输入,连译码器输出。第51页/共147页A0:选择8259A的两个端口,输入,连低位地址线。INT:向CPU发出的中断请求信号,输出与CPU的INTR端相连。INTA#:CPU给8259A的中断响应信号,输入;8259A要求两个负脉冲的中断响应信号;第1个是CPU响应中断的信号;第2个结束后,CPU读取8259送的中断类型号第52页/共147页CAS2~CAS0:双向级联信号线作主片时,为输出;作从片时,为输入与SP#/EN#配合实现8259A级联SP#/EN#:编程/双向使能缓冲

输入时:决定本片8259A是主片还是从片:SP#/EN#

=1,则为主片;SP#/EN#

=0

,则为从片。

输出时:启动8259A到CPU之间的数据总线驱动器输入还是输出,由8259A的工作方式决定:缓冲方式:SP#/EN#为输出;非缓冲方式:SP#/EN#为输入。第53页/共147页二、内部结构级联缓冲器/比较器控制电路数据总线缓冲器读/写控制电路中断服务寄存器(ISR)优先级管理逻辑(PR)中断请求寄存器(IRR)中断屏蔽寄存器(IMR)IR0IR1IR7RDINTWRSP/ENCSA0D7~D0CAS0CAS1CAS2INTA第54页/共147页1、数据总线缓冲器

8259A与系统数据总线的接口,8位、双向、三态传送信息种类:

(1)控制字(2)状态信息(3)中断类型号2、读/写控制电路

读写控制电路接收CPU送来的读/写命令RD#、WR#,片选信号CS#及端口选择信号A0,用于控制8259A与CPU之间的信息传送。第55页/共147页8259A的读写功能第56页/共147页3、级联缓冲/比较器

8259A和系统的连接有两种方式:(1)缓冲方式多片8259A级联的系统中使用,作为输出端当EN#=0时,控制数据从8259A送到CPU当EN#=1时,控制数据从CPU送到8259A(2)非缓冲方式单片8259A或少量8259A级联时使用,作为输入端控制8259A作为主片还是从片:

SP#=1,为主片;SP#=0,为从片

单片8259A时,SP#接高电平第57页/共147页4、中断请求寄存器IRR8位寄存器,存放外部输入的中断请求信号IR7~IR0;当某个IR端有中断请求时,IRR相应的某位置1;当中断请求被响应时,IRR的相应位清0。

5、中断屏蔽寄存器IMR

8位寄存器,用来存放各级中断请求的屏蔽信息。

若IMR第i位为1,则IRi中断申请被屏蔽若IMR第i位为0,则IRi中断申请被允许6、优先级判别器PR对保存在IRR中的中断请求进行优先级识别,送出最高优先级的中断请求到CPU和ISR中去。第58页/共147页7、中断服务寄存器ISR8位寄存器,保存正处理的中断请求信号;CPU响应后,由第一个信号将ISR寄存器中的相应位置“1”;中断返回前,由中断结束命令EOI将其清0。没进行中断服务的ISR各位为0。8、控制电路根据IRR和IMR的情况,根据PR判定优先级,控制8259A内部各部分协调工作,主要功能如下:控制8259A向CPU发INT信号和接收;控制ISR相应位置1,IRR相应位清0;控制8259A送中断类型号。第59页/共147页三、8259A的中断管理方式8259A有多种工作方式,是通过编程来设置的。1、8259A的编程结构8259A的中断管理方式是通过控制字来设置的。

初始化命令字写入寄存器ICW1~ICW4,只能设定1次。

操作命令字写入寄存器OCW1~OCW3,用来对中断处理过程进行控制,在系统运行过程中,操作命令字可进行多次设置。第60页/共147页译码器IR0IR1IR2IR3IR4IR5IR6IR7当前中断服务寄存器优先级裁决器中断请求寄存器中断屏蔽寄存器ICW1(芯片控制)ICW2(类型)ICW3(主/从)ICW4(方式控制)OCW3OCW1OCW2D0~D7AD0~AD7CAS2CAS0CAS1A08088连A08086连A1地址总线INTRINTWRINTARDCSSP/NE第61页/共147页2、优先级设置方式(1)完全嵌套方式默认方式;中断优先级固定,分0~7级,其中IR0最高,IR7最低;允许中断嵌套(只允许高级中断低级);可用普通EOI、自动AEOI结束中断,一般用普通EOI。(2)特殊全嵌套方式与(1)基本相同,区别在于允许同级中断请求进入;主要用于8259A级联时,主片的优先级设定;(3)优先级自动循环方式(4)优先级特殊循环方式第62页/共147页3、中断结束方式中断处理结束时发送中断的结束命令EOI,使ISR寄存器中对应位清“0”。不同时刻使ISR中对应位清“0”,对应着不同的中断结束方式。(1)普通EOI结束方式中断返回前,CPU向8259A传送EOI结束命令,将ISR中优先级最高位清0,用于完全嵌套工作方式;

EOI结束命令要放在IRET前;(2)特殊EOI结束方式CPU向8259A发特殊EOI结束命令,命令中将当前要清除的中断级别也传给8259A。此时8259A将ISR寄存器中指定级别的对应位清“0”。(3)自动EOI结束方式CPU发第二个INTA脉冲后,8259A自动将ISR寄存器中对应位清“0”;容易引起重复嵌套,不建议用。第63页/共147页4、循环优先级的循环方法根据中断结束方式不同,优先级循环又分为三种:(1)普通EOI循环方式中断结束后,将ISR中优先级最高的位清0,此级赋予最低级,最高级为其下一级,其余类推。(2)特殊EOI循环方式中断结束后,将ISR中由L2~L0给定级别相应的位清0,此级赋予最低级,最高级为其下一级,其余类推。(3)自动EOI循环方式CPU发第二个INTA脉冲后,将ISR寄存器中对应位清“0”;并按照普通EOI循环方式改变优先级。第64页/共147页5、中断源屏蔽方式可以对中断请求单独屏蔽,有两种方式:(1)普通屏蔽方式通过操作命令字OCW1将IMR中某一位或某几位置“1”,可将对应位的中断请求屏蔽掉。(2)特殊屏蔽方式屏蔽本级中断,允许高级或低级中断进入,通过OCW3进行设置。第65页/共147页6、中断请求引入方式(1)边沿触发方式8259A的IRi端以上升沿作为中断请求信号。(2)电平触发方式8259A的IRi端以高电平作为中断请求信号。注意:

当中断响应后,中断输入端的高电平必须及时撤出。(3)中断查询方式第66页/共147页四、8259A的编程方法分为两步:初始化编程:由CPU向8259A送初始化命令字ICW。在8259A开始正常工作前,必须写初始化命令字使其处于开始状态。操作命令编程:

由CPU向8259A送操作命令字OCW,可以在8259A初始化后,根据需要在程序的任何地方写入。第67页/共147页1、初始化命令字(1)ICW1

——芯片控制初始化命令字IC4SNGL0LTIM1A5A6A70D0D1D2D3D4D5D6D7A0ICW1的地址

1:需要ICW40:不设ICW4

1:8259A单片方式

0:8259A级联方式ICW1

的标志位8080/8085用触发方式1:高电平触发

0:上跳沿触发例7-13IBMPC/XT系统初始化中,设ICW1=13H,表示系统中8259A为单片方式,上升沿触发,要求设置ICW4。指令为:

MOVAL,13HOUT20H,AL第68页/共147页(2)ICW2——设置中断类型号初始化命令字

中断类型号基值,即IR0的类型号。其中低3位初始时为0,高5位由用户设定。工作过程中,低3位值由IR0~IR7中响应哪级中断(对应000~111)来确定。000T3T4T5T6T71D0D1D2D3D4D5D6D7A0中断类型的高5位例7-14

在IBMPC/XT系统中,T7~T3=00001,所以对应8个中断的类型号为08H~0FH。端口地址为21H。设置ICW2的指令为:

MOVAL,8OUT21H,AL第69页/共147页(3)ICW3——标识主片/从片初始化命令字8259A主片格式:S0S1S2S3S4S5S6S71D0D1D2D3D4D5D6D7A00:表示IRi端上未接8259A从片1:表示IRi端上接有8259A从片Si=ID0ID1ID2000001D0D1D2D3D4D5D6D7A08259A从片格式:从片8259A的识别地址第70页/共147页8259A→CPU00----从片CPU→8259A1EN输出1----主片1从片0主片1SP输入×0SP/ENM/SBUF1:8086/8088方式0:8080/8085方式1:中断自动结束0:非自动结束1:特殊全嵌套方式0:完全嵌套方式

PMAEOIM/SBUFSFNM0001D0D1D2D3D4D5D6D7A0非缓冲方式0缓冲方式/从片10缓冲方式/主片11(4)ICW4——方式控制初始化命令字第71页/共147页ICW设置的顺序:写ICW1写ICW2SNGL=1?写ICW3IC4=1?写IWC4YNNY地址A0=0A0=1A0=1A0=1第72页/共147页ICW功能:设定触发形式:电平、上升沿;设定工作方式:单片、级联;设定中断类型号基值;设定优先级方式;设定中断结束方式。第73页/共147页2、8259A的操作命令字及编程(1)OCW1——中断屏蔽操作命令字用于设置和读出中断屏蔽寄存器的内容,必须在ICW之后写入M0M1M2M3M4M5M6M71D0D1D2D3D4D5D6D7A01:屏蔽由IRi引入的中断请求0:允许IRi端中断请求引入Mi=例7-18

设某中断系统要求屏蔽IR3,IR5,8259A编程指令为:

MOVAL,00101000BOUT21H,AL第74页/共147页RSLEOI操作功能001一般EOI结束命令011特殊EOI结束命令101自动循环优先级的一般结束命令100设置优先级自动循环方式命令000结束优先级自动循环方式的命令111设置特殊优先级循环的EOI结束命令110设置特殊优先级循环方式命令010无效优先级固定0优先级循环1不发结束命令0发结束命令1L2L1L0无效0L2L1L0有效1L1L0L200EOISLRA00标志位111IR7110IR6101IR5100IR4011IR3010IR2001IR1000IR0L2L1L0最低优先级编码(2)OCW2设置8259A的优先权循环方式和中断结束方式。第75页/共147页(3)OCW3——特殊屏蔽方式和查询方式命令字

设定特殊屏蔽方式和中断查询的工作方式;设置读取8259A的IRR和ISR寄存器的内容。第76页/共147页3、编程小结ICW在程序初始化时写入,要按顺序且只能设定1次OCW在初始化命令字之后,可根据需要在程序的任何位置去设置,可设置多次。ICW1、OCW2、OCW3写入8259A偶地址端口,用D4D3位区分;ICW2、ICW3、ICW4和OCW1写入8259A奇地址端口,用顺序区分。第77页/共147页五、8259A的中断级联思考:最多级联64级,需要几片8259A?如果4片8259A,可管理多少级中断?一片8259A管理8级中断,当申请中断的外设多于8级时,可以将8259A级联使用,图7-14给出了两级级联的例子,第一级为8259A主片,第二级为8259A从片,主片可接1~8片从片,这样最多可以管理64级中断源。(9片)(29级)第78页/共147页外部中断请求+5VCAS2CAS0CAS1A0RDSP/NEIR7IR6IR5IR4IR3IR2IR1IR0INTWRINTAD0~D7CS从8259ACAS2CAS0CAS1A0RDSP/NEIR7IR6IR5IR4IR3IR2IR1IR0INTWRINTAD0~D7CS主8259A外部中断请求例7-21

某系统中两片8259A采用中断级联方式组成中断系统,从片的INT端连主片的IR3端,若当前主片从IR1,IR5端引入两个中断请求,中断类型号为31H,35H。中断服务程序的段基址为1000H,偏移地址分别为2000H及3000H。从片IR4,IR5端引入中断请求,类型号为44H和45H。中断服务程序基址2000H,偏移地址为3600H和4500H。第79页/共147页(1)设置中断向量将4个中断源的入口地址写入中断向量表

MOVAX,1000H ;送段地址

MOVDS,AXMOVDX,2000H ;送偏移地址

MOVAL,31H ;中断类型号

MOVAH,25HINT21H

MOVDX,3000H ;送偏移地址

MOVAL,35H ;中断类型号

INT21H第80页/共147页

MOVAX,2000H ;送段地址

MOVDS,AXMOVDX,3600H ;送偏移地址

MOVAL,44H ;中断类型号

MOVAH,25HINT21HMOVDX,4500H ;送偏移地址

MOVAL,45H ;中断类型号

INT21H第81页/共147页(2)主片8259A初始化编程

8259A主片端口地址为FFC8H和FFC9H

MOVAL,11H;定义ICW1,主片级联使用,边沿触发;要设ICW4

MOVDX,0FFC8HOUTDX,ALMOVAL,30H;定义ICW2,中断类型号30H~37HMOVDX,0FFC9HOUTDX,ALMOVAL,08H;定义ICW3,IR3端接从片的INT端

OUTDX,ALMOVAL,11H;定义ICW4,特殊全嵌套方式,非缓冲方式

OUTDX,AL;非自动EOI结束方式

MOVAL,0D5H;定义OCW1,允许IR1,IR3,IR5中断,其余屏蔽

OUTDX,AL第82页/共147页(3)从片8259A初始化编程

8259A从片端口地址为FFCAH和FFCBH

MOVAL,11H;定义ICW1,级联使用边沿触发,要设ICW4MOVDX,0FFCAHOUTDX,AL

MOVAL,40H;定义ICW2,引入中断类型号40H~47HMOVDX,0FFCBHOUTDX,ALMOVAL,03H;定义ICW3,从片接在主片的IR3端

OUTDX,AL

MOVAL,01H;定义ICW4,特殊全嵌套方式,非缓冲方式

OUTDX,AL;非自动EOI结束方式

MOVAL,0CFH;定义OCW1,允许IR4,IR5中断,其余屏蔽

OUTDX,AL第83页/共147页(4)中断的结束编程无论对主片8259A或从片8259A,操作命令字可根据需要在操作过程中设置,OCW2命令字定义中断结束方式时,通常放在中断服务子程序中。主片的中断结束命令为:

MOVAL,20H;定义OCW2,普通EOI结束方式

MOVDX,0FFC8HOUTDX,AL从片的中断结束命令为:

MOVAL,20H;定义OCW2,普通EOI结束方式

MOVDX,0FFCAHOUTDX,AL第84页/共147页小结主要内容:概述:中断过程、基本概念、使用中断好处、中断分类中断处理过程(可屏蔽中断)响应中断条件及过程中断向量表、中断向量的设置、中断类型号的来源可屏蔽中断优先级设定方法、中断嵌套过程可编程中断控制器8259A重点掌握基本概念、基本过程、8259A级联管理中断级数计算及简单应用。第85页/共147页P3021、2、4、7、8、9课后练习第86页/共147页8086CPU中断系统最多可管理

个不同中断源,由IF标志控制响应的称为

中断。8259A主要用于

接口设计;管理30级中断,至少需要

片8259A。256可屏蔽中断5第87页/共147页00057H00059H0005AH0005BH0005CH00058H下左图所示为8086中断向量表中的部分内容,填空写出对应该中断源的中断类型号及其中断处理程序的首地址。答:中断类型号:

;中断处理程序首地址:

。10H

20H

30H

40H

50H

60H第88页/共147页8086/8088CPU的中断分成

两大类,8086系统中硬件中断可分为

两种。8086系统最多能识别

种不同类型的中断,每种中断在中断向量表中分配有

个字节单元,用以指示中断服务程序的入口地址。8086提供的可接受外部中断请求信号的引脚是

。两种请求信号的不同之处在于

。采用级联方式,用9片8259A可管理

级中断。外部中断内部中断可屏蔽中断非屏蔽中断2564INTRNMI是否可被屏蔽64第89页/共147页写出下列中断类型的中断优先级,按顺序排列。①单步中断,②除法出错,③可屏蔽中断,④不可屏蔽中断。答:除法出错,不可屏蔽中断,可屏蔽中断,单步中断。第90页/共147页什么是中断类型码、中断向量、中断向量表?在基于8086/8088的微机系统中,中断类型码和中断向量之间有什么关系?答:处理机可处理的每种中断的编号为中断类型码。中断向量是指中断处理程序的入口地址,由处理机自动寻址。中断向量表是存放所有类型中断处理程序入口地址的一个默认的内存区域。8086系统中,中断类型码乘4得到向量表的入口,从此处读出4字节内容即为中断向量。第91页/共147页写出两种8086中断向量表的建立方法。(略)使用指令,使用DOS功能调用说明8086CPU软中断和调用子程序过程的异同。答:相同点:二者都是在需要时,用户用相应的指令实现不同点:调用子程序时,指令已经指明子程序的入口地址,而软中断则需要根据指令中提供的中断类型号,查中断向量表才能得到中断服务程序的入口地址;调用子程序时,系统只是保护断点处的地址,而软中断,系统不仅保护断点处的地址,而且还保存PSW寄存器的内容。第92页/共147页8086CPU中断系统最多可管理

个不同中断源,由IF标志控制响应的称为

中断。8259A主要用于

接口设计;管理30级中断,至少需要

片8259A。256可屏蔽中断5第93页/共147页00057H00059H0005AH0005BH0005CH00058H下左图所示为8086中断向量表中的部分内容,填空写出对应该中断源的中断类型号及其中断处理程序的首地址。答:中断类型号:

;中断处理程序首地址:

。10H

20H

30H

40H

50H

60H第94页/共147页8086/8088CPU的中断分成

两大类,8086系统中硬件中断可分为

两种。8086系统最多能识别

种不同类型的中断,每种中断在中断向量表中分配有

个字节单元,用以指示中断服务程序的入口地址。8086提供的可接受外部中断请求信号的引脚是

。两种请求信号的不同之处在于

。采用级联方式,用9片8259A可管理

级中断。外部中断内部中断可屏蔽中断非屏蔽中断2564INTRNMI是否可被屏蔽64第95页/共147页写出下列中断类型的中断优先级,按顺序排列。①单步中断,②除法出错,③可屏蔽中断,④不可屏蔽中断。答:除法出错,不可屏蔽中断,可屏蔽中断,单步中断。第96页/共147页什么是中断类型码、中断向量、中断向量表?在基于8086/8088的微机系统中,中断类型码和中断向量之间有什么关系?答:处理机可处理的每种中断的编号为中断类型码。中断向量是指中断处理程序的入口地址,由处理机自动寻址。中断向量表是存放所有类型中断处理程序入口地址的一个默认的内存区域。8086系统中,中断类型码乘4得到向量表的入口,从此处读出4字节内容即为中断向量。第97页/共147页写出两种8086中断向量表的建立方法。(略)说明8086CPU软中断和调用子程序过程的异同。答:相同点:二者都是在需要时,用户用相应的指令实现不同点:调用子程序时,指令已经指明子程序的入口地址,而软中断则需要根据指令中提供的中断类型号,查中断向量表才能得到中断服务程序的入口地址;调用子程序时,系统只是保护断点处的地址,而软中断,系统不仅保护断点处的地址,而且还保存PSW寄存器的内容。第98页/共147页考试时间:2013.1.6上午8:00-10:00

请提前20分钟到考场

考试地点:西廊201

考试形式:闭卷+开卷考前答疑:1月4号-5号上午8:30-11:30下午2:00-5:00基础实验楼B508第99页/共147页课程内容第1章绪论第2章8086系统结构第3章8086的寻址方式和指令系统第4章汇编语言程序设计第5章存储器第6章I/O接口第7章可编程外围接口芯片8255A及应用第8章可编程计数器/定时器8253及应用第9章微型计算机中断系统第100页/共147页CH1基础知识:系统概述、预备知识CH2CH5CH6分述CPU、存储器、I/O接口电路知识CH3CH4软件知识:寻址方式、指令系统、程序设计等CH7CH8可编程接口芯片8255A、8253CH9中断系统存储器CPUI/O接口地址总线AB数据总线DB控制总线CBI/O设备I/O总线控制总体框架难点:软硬件结合第101页/共147页一、微型计算机系统组成二、相关术语三、常用数制及其相互间的转换四、码制五、溢出判断六、BCD编码及常用字符的ASCII码第一章绪论第102页/共147页微处理器存储器I/O接口总线硬件系统软件系统微型计算机系统微型计算机(主板)外设ALU寄存器控制器键盘、鼠标显示器软驱、硬盘、光驱打印机、扫描仪系统软件应用软件一、微型计算机系统组成第103页/共147页

位、字节、字内存单元的地址和内容内存容量及常用单位内存中字数据的存储格式二、相关术语第104页/共147页非十→

按权展开,再按十进制求和十→非十整数部分:除以基数,取余,至商为0;最先得最低位小数部分:乘以基数,取整;至小数为0,最先得高位二←→十六用4位二进制数表示1位十六进制数注意:位数不够时要补0三、常用数制及其相互间的转换第105页/共147页n位二进制数均用于表示数值本身大小。四、码制无符号数在计算机中的表示机器数常用的表示方法有三种:原码、反码和补码注:正数的原码、反码、补码相同;负数表示不同。

掌握:定义及求解方法

有符号数在计算机中的表示--机器数8位二进制数的表示范围无符号数:0~

255

原码:-127~+127反码:-127~+127补码:-128~+127第106页/共147页方法1:异号相加—不会溢出。同号相加—可能溢出:同号相加时,结果符号与加数符号相反则溢出;方法2:双高位判别法两个带符号二进制数相加或相减时,若

C7C6=1则结果产生溢出。C7为最高位的进(借)位;C6为次高位的进(借)位。2、有符号数运算溢出判断五、溢出判断1、无符号数运算溢出判断第107页/共147页用4位二进制数编码一位十进制数。

压缩BCD非压缩BCD

例:15.6的压缩BCD为:00010101.0110BCD六、BCD编码及常用字符的ASCII码

1、BCD码2、常用字符的ASCII码数字0~9(30H~39H)大写字母‘A’~’Z’(41H~5A)小写字母‘a’~’z’(61H~7AH)第108页/共147页第二章8086系统结构一、8086CPU的内部结构二、寄存器结构三、各标志位的名称和含义四、常用引脚及两种工作模式五、8086存储器组织六、堆栈的概念及操作过程七、8086CPU时序第109页/共147页一、8086CPU的内部结构1、8086CPU主要特性(数据线、地址线,寻址的范围)2、8086CPU内部按功能可分为两部分:BIU(总线接口部件)EU(执行部件)掌握BIU、EU的功能、组成部分第110页/共147页目的变址寄存器

DestinationIndexSIDIBPSPAX

累加器

AccumulatorBX基数寄存器BaseCX计数寄存器CountDX数据寄存器DataAHBHCHDHALBLCLDLIPFlagsDSESSSCS数据段寄存器DataSegment附加段寄存器ExtraSegment堆栈段寄存器StackSegment代码段寄存器CodeSegment状态标志寄存器ProgramStatusWord指令指针寄存器InstructionPointer变址寄存器段寄存器控制寄存器通用寄存器源变址寄存器

SourceIndex基址指针寄存器

BasePointer堆栈指针寄存器

StackPointer指针寄存器数据寄存器8086CPU

寄存器组二、寄存器结构第111页/共147页状态标志:存放运算结果的特征6个状态标志位(CF,PF,AF,ZF,SF,OF)控制标志:控制某些特殊操作3个控制标志位(TF,IF,DF)标志位寄存器Flags具体格式:三、标志位的名称和含义第112页/共147页1、8086CPU芯片:40引脚,部分引脚采用分时复用技术;2、8086CPU有两种工作模式:最小模式:只有8086CPU一个处理器(单机系统)最大模式:有两个或多个微处理器,系统中所需要的控制信号由总线控制器8288提供(多机系统)3、常用引脚信号A19~A16、AD15~AD0、M/IO#、ALE、BHE#RD#、WR#、

NMI、INTR、INTA#

、MN/MX#四、常用引脚及两种工作模式第113页/共147页五、8086存储器组织1、存储器地址的分段管理分段管理的原因两种地址逻辑地址:软件设计时采用;段地址:偏移地址物理地址:CPU送到地址总线上的20位地址;存储器的绝对地址;物理地址=段基址×16+偏移地址。物理地址的实现:BIU中的地址加法器2、8086存储器的分体结构奇地址存储体与高8位数据线相连BHE#偶地址存储体

与低8位数据线相连

A0字数据的存储—小地址格式奇地址单元中读取一个字,需要访问2次存储器第114页/共147页1、堆栈的概念、特点

先进后出以字为单位2、堆栈指令

PUSHPOP3、堆栈操作过程

入栈、出栈(SP的变化、存储器单元内容的变化)注意:以下两种情况也有堆栈操作!**子程序调用和返回**中断转入服务程序和中断返回六、堆栈的概念及操作过程第115页/共147页1、基本概念时钟周期T、总线周期、指令周期2、典型时序每个总线周期至少包含4个时钟周期(T1~T4)一般情况下,在总线周期的T1状态传送地址,T2~T4状态传送数据。3、系统的复位和启动系统复位时各内部寄存器的值(CS为FFFFH,其余为0)系统复位后:程序将从FFFFH:0000H位置开始运行七、8086CPU时序第116页/共147页第三章8086的寻址方式和指令系统一、指令构成二、与数据有关的七种寻址方式三、I/O端口寻址方式(IN/OUT)四、转移类指令寻址方式五、8086的指令系统第117页/共147页操作码说明要执行的是什么操作操作对象,可以有0个、1个或2个目的源一、指令构成第118页/共147页1、立即寻址方式2、寄存器寻址方式3、直接寻址方式4、寄存器间接寻址方式5、寄存器相对寻址方式6、基址变址寻址方式7、相对基址变址寻址方式二、与数据有关的七种寻址方式如:MOVAX,0100H如:MOVAX,DX如:MOVAX,[0100H]如:MOVAX,[BX]如:MOVAX,[BX+0100H]如:MOVAX,[BX+SI]如:MOVAX,[BX+SI+20H]第119页/共147页直接端口寻址当端口号小于FFH(255)时,直接给出间接端口寻址端口号大于FFH(255)时,必须放在DX中给出三、I/O端口寻址方式(IN/OUT)例:INAL,80HINAX,82HMOVDX,3FFHINAL,DXINAX,DX例:OUT80H,AL

OUT82H,AXMOVDX,3FFHOUTDX,ALOUTDX,AX第120页/共147页1、段内直接转移例如:JMP0100H;IP=0100HJMPSHORTNEXT;NEXT为标号,符号地址2、段内间接转移例如:JMPBX;IP←

BXJMPWORDPTR[BX];IP←字内存单元的内容3、段间直接转移例如:JMPFARPTR标号4、段间间接转移例如:JMPDWORDPTR[BX]四、转移类指令寻址方式(以JMP为例)第121页/共147页1、数据传送指令出栈,并送入标志寄存器POPF输出OUT标志寄存器入栈指令PUSHF输入INAH内容装入标志寄存器低字节SAHF输入输出指令标志寄存器低字节装入AHLAHF表转换XLAT标志传送指令交换字或字节XCHG装入附加段寄存器LES出栈指令POP装入数据段寄存器LDS入栈指令PUSH装入有效地址LEA字节或字传送MOV地址目标传送指令通用数据传送指令五、8086的指令系统重点掌握各种指令的格式、功能、标志位及正确应用。注意:MOV指令允许传送的路径第122页/共147页2、算术运算指令加法指令ADD加法指令ADC带进位的加法指令INC增量指令注:ADC、DEC不影响CF减法指令SUB减法指令SBB带借位的减法指令DEC减量指令NEG取负指令CMP比较指令十进制数(BCD码)的运算指令DAA加法的十进制调整指令AAA加法的ASCII码调整指令DAS/AAS减法调整指令第123页/共147页3、逻辑运算与移位指令测试TEST带进位循环右移RCR算术右移SAR异或XOR带进位循环左移RCL逻辑右移SHR逻辑加(或)OR循环右移ROR算术左移SAL逻辑乘(与)AND循环左移ROL逻辑左移SHL取反NOT循环移位算术逻辑移位逻辑运算

逻辑运算和位移指令注意:逻辑运算指令的应用第124页/共147页4、控制转移指令无条件转移和过程调用指令JMPCALLRET无条件转移过程调用过程返回条件转移JZ/JE(10条)JA/JNBE(8条)直接标志转移间接标志转移条件循环控制LOOPCX≠0则循环中断INTIRET(执行过程)中断中断返回第125页/共147页一、汇编语言语句格式二、常用运算符及表达式的应用三、常用伪指令四、汇编语言程序设计第四章汇编语言程序设计掌握汇编基本语法及简单编程第126页/共147页两类语句:指令性语句伪指令语句两种格式:标号:指令助记符操作数,操作数;注释名字伪指令指示符操作数,操作数;注释四种数据项:常数、变量、标号、表达式一、汇编语言语句格式差别:格式及功能不同(形式);汇编时能否形成对应的机器码(本质)第127页/共147页1.算术运算符〔+,-,*,/(取商),MOD(取余)〕2.逻辑运算符〔AND,OR,NOT,XOR〕——按位操作3.关系运算符〔EQ,NE,LT,GT,LE,GE〕——注意计算结果4.数值返回运算符(分析运算符)

OFFSET,SEG,TYPE,LENGTH,SIZE5、修改属性运算符段操作符ES:

DS:

SS:

CS:PTR

格式:类型/距离PTR变量或标号6、补充:$:地址计数器的当前值二、常用运算符及表达式的应用第128页/共147页在汇编时进行处理,主要完成变量定义,段定义,段分配,指示程序开始和结束等功能。常用:数据定义(变量定义)语句:DB,DW,DD符号定义语句:EQU段定义语句:SEGMENT…ENDS段分配语句:ASSUME过程定义语句:PROC…ENDP程序开始、结束语句:END三、常用伪指令第129页/共147页基本程序结构顺序结构分支结构循环结构子程序结构注意:程序流程图的绘制方法四、汇编语言程序设计DATA

温馨提示

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

评论

0/150

提交评论