与实模式下相同,指令JMP、CALL和RET都具有段间转移的功能,指令INT和IRET总是段间转移。此外,中断/异常也将引起段间转移。有时把这些具有段间转移功能的指令统称为段间转移指令。 在保护模式下,段间转移的目标位置由选择子和偏移构成的地址表示,常把它称为目标地址指针。在32位代码段中,上述指针内的偏移使用32位表示,这样的指针也称为48位全指针。在实例二的32位代码段内就使用了48位全指针。在16位代码段中,上述指针内的偏移只使用16位表示。 与实模式下相似,段间转移指令JMP和段间调用指令CALL还可分为段间直接转移和段间间接转移两类。如果指令JMP和CALL在指令中直接含有目标地址指针,那么就是段间直接转移;如果指令中含有指向包含目标地址指针的门描述符或TSS描述符的指针,那么就是段间间接转移,这种指针只有选择子部分有效,指示调用门、任务门或 TSS描述符,而偏移部分不起作用。实际上,当段间转移指令JMP和段间调用指令CALL所含指针的选择子部分指示代码段描述符,那么就是段间直接转移,偏移部分表示目标代码段的入口点;当选择子部分指示门描述符或TSS描述符时,就是段间间接转移。
|