简述中断向量、中断向量表及中断服务程序的区别?
中断向量:中断地址的变量。中断向量表:对应中断源的中断处理程序的入口地址之间的联系表。
在早期的微型计算机系统中;中断标识码(中断源的标识),可用于生成相应的中断服务程序的入口地址或存放中断服务程序的首地址(中断源的标识)称为中断服务程序,处理“紧急事情”的程序被处理器理解为服务,并通过执行预先编程的特定程序来完成——称为中断服务程序。
8086系统中、中断类型码、中断向量、中断向量表的关系
5.28086/8088中断系统1.中断分类及中断类型代码中断源:产生中断的原因或发出中断请求的设备称为中断源。•中断分为两种:硬件中断和软件中断。
①硬件中断:由打印机、键盘等外部硬件产生的中断,也称为外部中断。
硬件中断可以分为两类:可屏蔽中断和不可屏蔽中断。
不可屏蔽中断:由NMI引脚引入,不受中断使能标志位影响,每个系统上只允许有一个,用于处理掉电处理等紧急情况。
当该中断发生时,系统立即响应。
即由INTR引脚引入,受中断使能标志的影响。
也就是说,只有当IF=1时才能进入可屏蔽中断,反之亦然。
可以有多个可屏蔽中断,并且通常优先级排队允许选择多个中断源之一进行处理。
②软件中断(内部中断):根据特定命令或标志寄存器中特定标志设置而发生。
它与硬件电路无关,通常涉及除以零或INTn指令。
INT0指令引发溢出中断INT3指令引发断点中断单步由标志TF引发↘与指令不匹配由计算结果除以零↙与指令不匹配•中断类型代码:8086/8088分配中断各中断源类型代码,取值范围为0~255,共有56种中断类型。
我们可以处理它。
这包括软件中断、系统占用中断和暴露给用户的中断。
2.中断向量和中断向量表系统处理中断的方式有多种。
中断处理中最重要的一步是如何根据各种中断源进入相应的中断服务子程序。
目前最常用的中断是向量。
打断。
中断向量:每个中断服务子程序的入口称为中断向量。
中断向量表:这些中断向量按照一定的规则排列成一个表,供中断源发出中断时使用。
我们可以查找请求表,找到中断向量,然后将其发送到相应的中断服务子程序中。
8086/8088中断系统的中断向量表位于0段0~3FFFH存储区域。
每个中断向量占用四个单元,其中前两个存储中断的入口地址偏移量。
处理子程序(IP),先存储低位,最后存储高位。
最后两个单元存储中断处理子程序入口地址的段地址(CS),整个中断向量也是低位在前存储。
按中断类型编号排序。
P参见图5-14。
下图给出了中断类型代码和中断向量位置的对应关系。
其中00H~04H为专用中断,05H~3FH为系统保留中断。
通常,用户无法定义它们(例如INT21H有一些固定用途,如图5-14中的系统调用)。
~FF是用户定义的中断。
00H至04H-系统独占10H至1FH-BIOS使用40H至FFH-用户使用08H至0FH-硬件中断20H至3FH-DOS使用中断类型编号*4来计算总数中特定中断类型位置的中断向量.中断向量表。
例如类型号为20H,则中断向量的存储位置为20H*4=80H。
(若中断服务子程序的入口地址为4030:2010,假设为10H、20H、30H、40.H。
当系统响应20H号中断时,自动搜索中断向量,找到对应的中断向量,并发送给CS和IP。
3.中断响应:由于8086/8088软件中断和硬件中断的响应过程不同,下面主要解释软件中断和硬件中断的原因。
•硬件中断是由NMI引脚输入的,或者是由INTR引脚输入的可屏蔽中断。
以下是可屏蔽中断的示例:CPU在引脚上触发INTR。
此时,如果IF=1,则当前指令执行完毕后,CPU将开始响应外部中断请求,此时CPU将连续向该引脚发送两个负脉冲,然后发送中断类型代码。
输入中断类型码后,CPU执行以下操作:①将中断类型码放入临时寄存器中存储。
为了保护状态,CPU将TF标志设置为0并将TF清0,以防止在中断处理子程序期间发生其他中断,这是为了避免以单步方式执行,因为特殊通知会自动关闭中断。
CPU响应中断时有IF标志,因此如果用户想要嵌套中断,必须在自己的中断处理子程序中进行。
必须使用ON命令来复位IF。
④断点保护,断点表示响应中断时主程序当前指令的下一条指令的地址。
因此,确保断点的工作就是将当前的IP和CS压入堆栈。
保护断点的目的是为了保证以后能正确返回到基础程序。
⑤根据获取到的中断类型代码,查找如下:中断向量表中相应的中断向量被加载到IP和CS中,然后自动传送到中断服务子程序。
对于NMI进入的中断请求,类型码固定为2,因此CPU不需要从外设读取类型码,也不需要计算中断向量表中的地址。
又分为IP和CS。
图5-15所示为8086/8088中断响应过程的流程图。
让我解释一下关于这张照片的一些事情。
①除软件中断外,8086/8088有一个内部“可屏蔽中断”。
作为优先事项。
级别之间(单步除外)——即中断0、1、3、4比不可屏蔽中断优先级高,不可屏蔽中断比可屏蔽中断优先级高,单步中断优先级高。
最低优先级;②IF=1是否只有在可以屏蔽中断的情况下才确定?,它只取中断类型代码,不做其余的事情。
③单步中断,每执行一条指令就中断一次,并显示当时各寄存器的,供用户参考。
当进入单步中断响应时,CPU自动清除TF。
响应恢复导致中断返回。
此时标志寄存器的值为TF=1,执行完指令后,程序进入单步中断,直到TF变为0。
④对于中断重叠,NMI总能响应。
如果中断处理子程序有中断允许指令集,它也可以响应INTR请求。
⑤弹出IP、CS、标志位并返回断点的操作由IRET指令完成。
⑥即使满足条件,也存在CPU无法立即响应中断而必须执行下一条指令(而不是当前指令)的情况。
•准确执行LOCK命令。
•执行向SS寄存器赋值的传输指令。
这是因为通常必须使用两条连续的指令来给SS和SP寄存器赋值,以确保堆栈的正确性。
针。
⑦当遇到等待命令或字符串操作命令时,命令执行过程中允许中断。
这时必须注意保护中断处理子程序的现场,以便中断返回后这些指令能够继续正确执行。
假设8086CPU从8259A中读取的中断类型号为59H,其中断向量在中断向量表中的地址是什么?
中断号*4为偏移地址,+2为段地址。
这是完整的中断向量。
中断向量地址=中断向量号*4
即中断向量地址=76*4=304=130H
地址索引=中断类型*4.76H*4H=1D8H
中断向量表:因为有多个中断请求,相应就有多个中断服务程序,即有多个输入地址(即中断向量)来存放这些程序。
为此,系统将中断向量表安排到有界表空间中从内存中专门存放所有中断向量,这张表就是中断向量表。
扩展信息:
存放中断服务程序的输入地址
存放中断向量(共256个)),这个称为一个区域,该内存是一个中断向量表,地址范围是0~3FFH。
在PC/AT中,硬件产生的中断标识码称为中断类型号(当然,还有其他产生中断类型号的方法,比如直接包含在指令中,由CPU等),即在中断响应期间,8259A为当前请求中断的最高优先级中断源生成中断类型号。
中断类型号与中断向量之间存在如下关系:
中断类型号×4=中断子程序首地址的存储区首地址=中断向量地址
是的,第一个地址存储为中断向量,中断服务例程输入取自从此地址开始的四个卷。
参考来源:百度百科-中断载波
中断类型号是3DH,则它的中断向量首地址是多少?
中断向量首地址=中断类型号×4=3D*4=F4。
中断向量的首地址是000F4。
在PC/AT上,硬件产生的中断标识码称为中断类型号;那是,8259A在中断响应期间产生的中断类型号是最高优先级的中断类型号。
该资源当前正在请求拦截。
中断类型号与中断向量的关系为:中断类型号×4=中断子存放的首地址=中断向量。
附加信息:
中断向量地址;即存储中断向量的存储单元的地址;以及中断服务程序入口点的地址。
在PC/AT设备中,中断向量是指中断服务程序的入口地址,每个中断向量分配4个连续的字节单元。
存储该条目的段是偏移IP。
在PC/AT上,至少1KB内存用于存储中断向量(共256个)该内存区域称为中断向量表,地址范围为0。
〜3FFH。
movax4ch,int21h中4ch是什么,21h又是什么,中断向量和中断类型是什么关系
int21h使能中断并进入正在执行的中断程序。中断程序的输入地址是4ch,4ch放在ax中。