汇编语言假设对应某个的中断处理程序入口地址为83A00H,内存第14H~1BH的依次为:
存储器14H~1BH的如下。应该是00H3AH00H80H,对吧?从你的问题中我们可以看出,中断处理程序的入口地址是83A00H,其逻辑地址是8000H:3A00H。
因此,14H~1BH中存放的值00H3AH00H80H就是中断向量,14H就是中断向量地址。
中断类型号=中断向量地址/4=14H/4=5因此中断类型号为5。
中断如何查找?
步骤如下:1.确定中断类型号:您需要知道您想要的中断类型号。不同类型的中断有不同的编号,例如键盘中断为类型1,定时器中断为编号8等。
2、计算中断向量表中中断向量表项的地址:中断向量表是存储中断控制器的入口地址的表。
实模式下,交叉向量表的起始地址为0x0000:0x0000,即物理地址0。
根据中断类型号,可以通过以下计算确定中断向量输入的物理地址:中断向量输入地址=中断类型号×4。
例如,获取中断类型号为1的向量。
计算出的物理地址为43.在内存中查找中断向量:根据计算出的向量输入地址在内存中查找中断向量。
每个中断向量占用4个字节的存储空间,低地址的两个字节存储中断处理程序(IP),高地址的两个字节存储类地址(CS)。
假如中断类型号为19H,它对应的中断服务程序的入口地址为2450:5000H,
当中断类型号为19H时,对应的中断服务程序的输入地址为2450:5000H。为了更清楚地展示这个过程,我们可以通过逻辑地址和物理地址的转换来理解这个机制。
首先,我们计算逻辑地址。
23120H减去2200H*10H等于1120H。
这一步展示了逻辑地址转换为计算结果的过程。
其次,我们看一下中断向量表中的地址。
中断类型号20H乘以4等于80H。
这意味着在中断向量表中,该中断类型对应的地址位置为80H。
中断向量表中的每个表项占用4个字节来存储段基地址和逻辑地址。
在中断向量表中,内存位置中的值代表段基地址和逻辑地址。
更准确地说,从高地址到低地址,分别是晚上10点、上午12点、上午11点和晚上8点。
这些值分别代表中断服务程序的段基地址和偏移地址。
为了更直观的理解,我们给出一个示意图。
物理地址与逻辑地址的对应关系如下:物理地址逻辑地址存储单元值00080H0080H20H00081H0081H11H00082H0082H00H00083H0083H22H通过上面的分析,我们可以看出程序如何输入地址类型号进行中断服务中断向量19H由中断向量表中的条目确定。
这种机制保证了可以正确调用中断处理程序来响应中断事件。
中断类型码的计算
在已知的中断向量表中,001C4H存储2200H,001C6H存储3040H。
中断类型代码为(71H)。
中断服务程序入口地址的逻辑地址和物理地址分别为(3040H:2200H)和(32600)H。
说明:001C4H/4=71H
中断服务程序的入口地址存储格式是先偏移地址后段地址,所以为3040H:2200H
物理地址:30400H+2200H=32600H。
扩展信息
中断类型代码是8位二进制数,即0~255。
各类中断的服务子程序入口地址都放在中断向量表(即内存的最低1KB)中。
根据中断类型代码×4,获取中断向量表中中断类型服务子程序的入口地址,然后将该地址取出并传送给相应的子程序。
例如:
日时钟中断:08H
键盘中断:09H