中断服务程序的入口地址是通过中断矢量表来确定的。中断矢量表是一个在内存中开辟的区域,用于存放每个中断服务程序的入口地址。每个中断源对应一个中断服务程序,每一个中断服务程序都有固定的入口地址。
确定中断矢量号
中断矢量号是一个0到255之间的整数,每个中断源对应一个唯一的中断矢量号。
查找中断矢量表
中断矢量表位于内存的固定地址,对于8086 CPU,这个区域的首地址是00000H。
中断矢量表的大小是1KB(00000H ~ 003FFH),每个中断服务程序的入口地址占四个字节(一个双字),共可保存256个中断向量。
计算物理地址
中断服务程序的入口地址由段地址和偏移地址组成。段地址是中断矢量表中的地址,偏移地址是中断矢量号乘以4(因为每个入口地址占4个字节)。
物理地址 = 段地址(CS) + 偏移地址(IP)
例如,如果中断矢量号为0x10(即16),则:
段地址(CS) = 0x0000
偏移地址(IP) = 0x10 * 4 = 0x40
物理地址 = 0x0000 + 0x40 = 0x0040
因此,中断服务程序的入口地址为CS:IP = 0x0000:0x0040,即0:40H。
示例
假设中断矢量号为0x10(即16),则中断服务程序的入口地址计算如下:
段地址(CS) = 0x0000
偏移地址(IP) = 0x10 * 4 = 0x40
物理地址 = 0x0000 + 0x40 = 0x0040
所以,中断服务程序的入口地址为CS:IP = 0x0000:0x0040,即0:40H。
总结
通过上述步骤,可以计算出任意中断源的中断服务程序的入口地址。关键在于确定中断矢量号,并正确计算段地址和偏移地址,从而得到物理地址。