中断服务表指针ISTP(Interrupt Service Table Pointer)寄存器用于定位中断服务程序的位置,即ISTP指明中断发生后去哪里找要执行的程序,ISTP(其中的ISTB字段)就是指向IST表的寄存器。ISTP中的一个字段ISTB确定IST的地址基数部分;另一个字段HPEINT确定特定的中断并定位特定的取指包在IST中的位置。图6-4所示为ISTP的各字段,表6-2描述了各字段及其如何使用。下图为ISTP寄存器,bit 0~4必须设置为0,即IST表的起始地址或者说获取包必须是32字节对齐。ISTB域表示IST地址的中断服务表基地址。该字段在复位时为默认值0地址。因此,在启动时,IST必须置于该0地址处,因为复位RESET时,系统必须要从RESET的vector处执行,即从地址0处开始执行,然后跳转到bootloader程序执行(RESET中断的ISR)。但复位后,可以向ISTB写入新的值来重定位IST。如果重新定位,则第一个ISFP(对应于RESET中断)将从不被执行,因为复位使ISTB置为0。HPEINT字段给定当前IER中使能的最高优先级中断号(与IFR相关位的位置相关),即当前pending的并且在IER中使能的最高优先级的中断号,这样,ISTP就可以用于手动的跳转到最高级的使能的中断(通过ISTP的值加上最高优先级中断在IST中的偏移,就可以得到相应的vector地址)。如果没有挂起和使能的中断,HPEINT的值为0000b。这个相应的中断不需要靠NMIE(除非NMI)或GIE来使能。