中断服务表指针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来使能。