本文介绍操作系统类指令。其中的某些指令始于286。通常只在操作系统代码中使用这些指令,而不在应用程序中使用这些指令。这是把它们称为操作系统类指令的原因。为了保证操作系统的安全,保护模式下的80386支持四个特权级。相应地,这些操作系统类指令也可分为三种:实模式和任何特权级下可执行的指令、实模式及特权级0下可执行的指令和仅在保护模式下执行的指令。 <一>实模式和任何特权级下可执行的指令1.存储全局和中断描述符表寄存器指令 全局描述符表GDT和中断描述符表IDT包含着系统的重要数据,对应的两个描述符表寄存器GDTR和IDTR含有这两张表的定位信息。利用存储描述符表寄存器指令能把描述符表寄存器的内容保存到指定的存储单元。这样,访问这些存储单元就可获得描述符表的定位信息。与GDT和IDT被所有任务共享不同,LDT是每个任务私有的,所以存储局部描述符表寄存器LDTR的指令不在所列。 (1)存储全局描述符表寄存器指令 存储全局描述符表寄存器指令的格式如下: SGDT QWORD PTR DST 其中操作数DST是48位(6字节)的存储器操作数。该指令的功能是把全局描述符表寄存器GDTR的内容存储到存储单元DST。GDTR中的16位界限存入DST的低字,GDTR中的32位基地址存入DST的高双字。该指令对标志没有影响。 (2)存储中断描述符表寄存器指令 存储中断描述符表寄存器指令的格式如下: SIDT QWORD PTR DST 其中操作数DST是48位(6字节)的存储器操作数。该指令的功能是把中断描述符表寄存器IDTR的内容存储到存储单元DST。IDTR中的16位界限存入DST的低字,IDTR中的32位基地址存入DST的高双字。该指令对标志没有影响。 2.存储机器状态字指令 存储机器状态字指令的格式如下: SMSW DST 其中操作数DST可以是16位(字)的存储器操作数或寄存器。该指令的功能是把机器状态字的内容存储到DST。该指令对标志没有影响 80386有此指令是为了包含80286的指令集,以便与其兼容。由于80386的控制寄存器CR0的低16位等同于80286的机器状态字,所以,在为80386编程时,如果需要存储机器状态字,那么最好使用存储CR0寄存器的指令。  
|