8086系统中、中断类型码、中断向量、中断向量表的关系
5.28086/8088中断系统1.中断类型代码中断和中断源:提供中断原因或中断请求的设备称为中断源。•中断分为两种类型:硬件中断和软件中断。
硬件中断分为两类。
不可屏蔽中断:由NMIPIN引入,不影响中断使能标志,每个系统只允许一个,用于处理紧急情况。
一旦发生此中断,系统立即响应,通过INTR引脚,影响中断使能标志,即只有进入IF=1时才覆盖中断,反之亦然。
可能有多个可以覆盖的中断,通常通过优先级排队,其中选择几个中断源之一进行处理。
②软件中断(内部中断):根据特定指令或标志寄存器中的标志设置而产生。
溢出中断由INT0指令引起断点中断由INT3指令引起单动由标志位TF↘与指令不匹配引起除以0是由计算结果↙与指令不匹配产生•中断类型代码:8086/8088为每个中断源分配一个中断Codetype,值为0~255,即56种中断可以处理。
其中包括软件中断、系统中断和用户开放中断。
2.中断向量和中断向量表系统可以通过多种方式处理中断。
终止。
中断向量:每个中断服务的输入称为中断向量;查询时,可以查表,确定中断向量,然后传递给相应的中断服务子程序。
8086/8088中断系统中的中断向量表位于0~3FFFH存储位置的0段。
每个中断向量包含四个分量,其中前两个分量存储中断入口地址的偏移量。
处理子程序(IP),低位在前,高位在后;根据快捷方式类型的数量来准备。
P参见图5-14。
图中,shortcut类型代码与shortcut向量空间的关系它表明。
其中00H~04H为专用中断,05H~3FH为系统定义的中断,一般不能由用户定义(有的有固定用途,如MS-DOS中的INT21H图5-14)~FF为用户定义中断。
00H~04H-系统独占10H~1FH-BIOS40H~FFH-用户使用08H~0FH-硬件中断20H~3FH-DOS中断类型号*使用4计算中断向量具体中断向量的位置中断向量表。
例如类型号为20H,则中断向量存储位置为20H*4=80H(中断服务子单元入口地址为4030:2010,则说10H、20H、30H、40.H。
当系统响应中断号20H,会自动找到中断向量对应的截距向量检测并加载到中断服务中。
3.中断响应流程和时间8086/8088软件中断响应流程不同IF=1到达,当前指令执行完毕后,CPU开始响应外部中断请求,并且外设连接到第二个负极一个脉冲后,在数据线上发送中断类型码,接收中断类型码后,CPU执行以下功能:①将中断类型码放入临时寄存器TF标志为0。
防止响应中断时出现其他中断将TF清0可以防止CPU一步执行中断处理部分由于CPU会自动清除IF标志位,因此如果用户想要插入中断,则必须使用中断指令来重置IF。
因此,维护中断点的任务就是将当前IP和CS的压入堆栈,中断向量表中对应的中断向量,加载到IP和CS中,然后自动传送到中断服务子程序中。
NMI提交的终止请求,其类型代码固定为2因此,CPU不需要读取外设上的代码类型,也不需要计算中断向量表的地址分别到IP和CS。
图5-15是8086/8088中断响应过程的流程图,我们对此图做一些说明:①8086/8088除了软件中断外,内部还有“不可屏蔽中断”和“可屏蔽中断”。
与优先事项。
其中(单步除外)——即中断0、1、3、4的优先级高于不可屏蔽中断,不可屏蔽中断高于可屏蔽中断,单级中断有较低的优先级;,只取终止类型代码,其余无此步骤。
③单步中断时,指令每执行一次就中断一次,并将各寄存器的显示给用户参考,直至进入单相中断。
④对于排序中断,NMI总能响应。
⑤提取IP、CS和标志位并返回断点的功能由IRET指令完成。
⑥在某些情况下,即使满足条件,CPU也不能立即响应中断,必须执行下一条指令(而不是当前指令)。
正确执行锁定指令;执行给SS寄存器值赋值的传送指令,因为一般情况下,为了保证出栈的正确性,需要使用两条连续的指令来给SS和SP寄存器值赋值。
指针。
⑦当遇到等待指令或字符串操作指令时,指令执行过程中允许中断。
此时,必须注意维护中断处理子程序中的空间,以保证中断返回后这些指令继续正确执行。
从8086RAM地址0002CH开始存放四个字节中断向量对应的中断号?
中断号范围为0~FF。
由于占用了从00000到0002B的11个中断号,因此从0002CH开始的中断号为11。
答案是11。
因为中断号(实际上是中断地址)占用4个字节的空间,0002B=44除以4就是11,所以从0002C开始就是第12个。
中断号为11。
中断类型代码*4=中断向量;002CH十进制为44,44/4=11,十六进制11为0BH。
17H转为十六进制,4转为十进制,17H=23,23*4=92,92转为十六进制,就变成了5CH。
同理,0BH=11,11*4=44,44=2CH。
扩展信息:
用于存储中断向量(共256个),这块内存区域称为中断向量表,地址范围为0。
〜3FFH。
在PC/AT中,硬件生成的中断标识码称为中断类型号(当然也有其他方式自动生成中断类型号,比如直接在指令中指定)。
也就是说,在中断响应期间,8259A生成当前请求中断的最高优先级中断源的中断类型号。
中断类型号与中断向量之间存在如下关系:
中断类型号×4=中断子程序首地址所在存储区首地址=中断向量地址
是的,保存了中断向量的首地址。
中断服务例程的条目取自从此地址开始的四个存储单元。
参考来源:百度百科-中断向量
王爽汇编语言的检测点12.1
8086系统在最低1KB内存区域(00000H~003FFH)实现了中断向量程序,提供了256种中断向量。这1024个单元被分为256组,每组包含4个字节单元、要存储的基段地址和段内偏移向量的地址。
高2个字节存储基段地址,低2个字节存储段地址。
8086系统将中断向量表中的中断明确分为三部分:第一部分是中断,类型号为0~4;,型号为32H~0FFH。
检测点12.1分析:计算中断服务入口地址的方法是从内存地址为中断代码类型*4和中断代码类型*4+2的两个字单元中读取过程中断的入口地址。
例如段基地址和段内地址中断号。
0位于0000H和0000H,分别是中断号的基段地址和段内地址。
1分别位于0070H和108BH,其余的。
在具体处理时,需要IP(指针)和CS(注册表段码)来建立间隙入口地址。
例子中的3号中断,计算系统有其入口地址:IP读取两个字节3*4=12,即两个字节12和13,CS读取两个字节3*4+2=14。
希望以上对您有所帮助,如果您有任何疑问或需要进一步说明,请随时询问。
断点中断的中断类型码是()。
断点中断的中断类型代码为()。A.1B.2C.3D.4正确答案:C