**
首先说中断是什么?
**
中断就是CPU遇到异常事件的时候停止当前程序去处理异常情况,并且在处理完异常状况之后重新返回当前执行程序的过程。
中断分为硬件中断和软件中断。硬件中断分为可屏蔽中断INTR和非屏蔽中断NMI。其中软件中断五个部分包括断点、单步、除法、溢出等。
程序可屏蔽中断是通过外部中断源控制的,其余是硬件预先设置。
可屏蔽中断的过程是:外设向CPU发出中断请求,如果IF(中断允许标志位)为1的话,CPU会响应中断请求,CPU通过INTA向外设发出两个负脉冲,第一个负脉冲告诉外设准备好中断类型码,第二个负脉冲将中断类型码送过来。其中CPU从数据总线获取中断类型码放到暂存器中。然后PSW标志寄存器入栈保护,IF和TF(陷阱/跟踪标志位)清零。断点CS、IP断点保护。将中断类型号*4得到中断向量,由中断向量得到中断服务子程序地址转到中断服务子程序执行。
中断常用术语:
③中断向量 中断向量
中断服务子程序的入口地址,即中断服务子程序的第一条指令的地址在存储器中的存放位置。
④中断向量表 中断向量表
中断向量构成的表格,位于存储器的最低地址单元。
执行的现行程序被中断时的下一条指令的地址,又称断点地址。
⑤断点 断点
中服程序中应保护和恢复的相关信息。
⑦中断优先级 中断优先级
系统中多个中断源同时提出中断请求时,需按中断的轻重缓急 给每个中断源指定一个优先级别。
⑧中断嵌套 中断嵌套
中断服务程序运行中响应更高级别中断请求。
⑨中断类型号
处理器对各类中断的中断源进行的统一编号n , n的取值范围 的取值范围 是 是0~255 。
单个中断源的过程
CPU开中断时,若有中断请求开中断时,它也并不立即响应。
只有当现行指令运行到最后一个 只有当现行指令运行到最后一个 机器周期的最后一个T状态时, CPU才采样才采样 INTR信号,若有此信号, CPU进入中断响应周期。
CPU响应中断及处理过程 响应中断及处理过程
①关中断
② 保留断点
③保护现场
④ 给出中断入口 给出中断入口(地址 ) ,转入相应的中断服务程序
⑤ 恢复现场 恢复现场
⑥ 开中断与返回
本人不才,有不足之处,还望各位前辈请多多指教。如果内容有什么问题还请指出。这是本人为研究生复试微机原理做的一些总结,关于老师提问微机中断的回答。其实我们不需要全部掌握,但是要了解中断大概流程。中断请求中断响应优先级判别中断处理中断返回,INTR和NMI区别,还有要了解8255和8259,这里再多说一点
8255 有三种工作方式
方式0(基本输入输出方式):
不需任何选通信号,A口、百B口、高半C口、低半C口,者可被设定为输入或输出。
作输出口时输出数据存锁;作输入口时输入数据不存锁。
方式1(选通输入输出方式):
A、B、C 三个口分度为两组。
A组包括A口及高半C口,A口可编程设定为输入或输出,高半C口作I/O控制及同步信号;
B组包括B口及低半C口,B口可编程设定为输入或输出,低半C口作I/O控制及同步信号;
A口、内B口的输入/输出数据都被存锁。
方式2(双向总线方式):
A口(仅A口)作8位双向总线,C口的PC3~容PC7位用作I/O控制及同步信号;
B口及C口的PC0~PC2可编程设定为方式0或方式1工作。
**
8259A
**
1)中断请求寄存器(IRR)interrupt requist register
中断请求寄存器(IRR)为8位,接受来自IR0~IR7的中断请求信号,当IR0~IR7上出现某一中断请求信号时,IRR对应位被置1;
(2)中断屏蔽寄存器IMR mask
中断屏蔽寄存器IMR 为8位(8个中断输入),若IRR(中断请求寄存器)中记录的8个中断请求中有任何一个需要屏蔽,只要将IMR的相应位置1即可,未被屏蔽的中断请求可以进入优先权判别器;它的内容由CPU通过对8259初始化时设置设定。
(3)中断服务寄存器ISR severise
8位,保存当前正在处理的中断请求,例如,如果ISR的D2=1,表示CPU正在为来自IR2的中断请求服务。
(4)优先权判别器PR
若某中断请求正在被处理,8259A外部又有新的中断请求,则由优先权判别器将新进入的中断请求和当前正在处理的中断进行比较,以决定哪一个优先级更高。若新的中断请求比正在处理的中断级别高,由PR通过控制逻辑向CPU发出中断申请INT,正在处理的中断自动被禁止,先处理级别高的中断。
(5)数据总线缓冲器
用于8259A与数据总线的接口,传输命令控制字、状态字和中断类型码。
(6)读/写控制逻辑
确定数据总线缓冲器中数据的传输方向,选择内部的各命令字寄存器。当CPU发读信号时将8259A的状态信息放到数据总线上;当CPU发写信号时,将CPU发来的命令字信息送入指定的命令字寄存器中。
(7)级联缓冲/比较器
用来存放和比较在系统中用到的所有8259A的级联地址。主控8259A通过CAS0、CAS1和CAS2发送级联地址,选中从控8259A。
功能:就是在有多个中断源的系统中,接受外部的中断请求,并进行判断,选中当前优先级最高的中断请求,再将此请求送到cpu的INTR端;当cpu响应中断并进入中断子程序的处理过程后,中断控制器仍负责对外部中断请求的管理。
8259A的主要功能如下:
①一片8259A可以接受并管理8级可屏蔽中断请求,通过8片8259A级联可扩展至63级可屏蔽中断优先控制。
②对每一级中断都可以通过程序来屏蔽或允许。
③在中断响应周期,8259A可为CPU提供相应的中断类型码。
④具有多种工作方式,并可通过编程来加以选择。
初始化命令字
8259A有4个初始化命令字ICW1~ICW4, 它们按照一定的顺序送入,用于设置8259A的初始状态。无论何时,当微处理器向8259A发送一条A0=0和D4=1的命令时,这条命令就译码为ICW1。 A0=0和D4=1是ICW1的标识位! 利用A0=0,D4=1对ICW1寻址。
1)ICW1:规定8259的连接方式(单片或级联)与中断源请求信号的有效形式(边沿或电平触发)。
(2) ICW2(中断类型码字)
ICW2是设置中断类型码的初始化命令字。
编程时用ICW2设置中断类型码高5位T7~T3,低3位自动插入IR的编码。
了某位中断请求输入线所对应的向量类型码,可以使CPU自动得到相应的中断请求的中断类型号。
(3) ICW3(级连控制字)
ICW3是标志主片/从片的初始化命令字。只有在一个系统中包含多片8259A时,ICW3才有意义!!!
4) ICW4(中断结束方式字)
在对8259A用初始化命令字进行初始化后,就进入工作状态,准备好接收IR输入的中断请求信号。在8259A工作期间, 可通过操作命令字来使它按不同的方式进行操作。
操作命令字
是在应用程序内部设置的。操作命令字共有三个,可以独立使用。
1)OCW1(屏蔽控制字)
OCW1称为中断屏蔽操作命令字,其格式如右
2) OCW2(中断结束和优先权循环控制字)
OCW2用来设置优先级循环方式和中断结束方式
3) OCW3(设置屏蔽方式和读状态控制字)
OCW3的功能有三个方面:一是设置和撤消特殊屏蔽方式; 二是设置中断查询方式;三是用来设置对8259A内部寄存器的读出命令。以上部分内容来自百度搜索,这里分享给大家以供学习交流。