• 当前位置:首页>>汇编语言>>汇编语言基础教程>>实模式及特权级0下可执行的指令
  • 实模式及特权级0下可执行的指令
  •     下列指令涉及设置关键的寄存器,所以只能在实模式和保护模式的特权级0下执行。为了从初始 时的实模式转入保护模式,必须做基本的准备工作。例如,设置妥全局描述符表寄存器GDTR等。 这是允许下列指令在实模式下工作的原因。
        在保护模式下,如果当前特权级(CPL)不为0,执行这些指令将引起错误码为0的通用保护故障。 在虚拟8086方式下,因为其CPL为3,所以执行这些指令也将会引起出错码为0的通用保护故障。

    1.清任务切换标志指令

        每当任务切换时,控制寄存器CR0中的任务切换标志TS被自动置1。这样安排的原因已在前文中 说明过。清任务切换标志指令的功能是把TS标志清0,该指令的格式如下:
    
        CLTS
    
    
        该指令仅影响TS标志,对其它标志没有影响。

    2.暂停指令

        暂停指令的格式如下:
    
        HLT
    
    
        该指令使处理器暂停执行。暂停之后的系统,只有在接受一个已经启用的中断或让系统复位, 才能重新启动。该指令对标志没有影响。

    3.装载全局描述符表和中断描述符表寄存器的指令

    (1)装载全局描述符表寄存器指令

        装载全局描述符表寄存器指令的格式如下:
    
        LGDT    QWORD PTR SRC
    
    
        其中操作数SRC是48位(6字节)的存储器操作数。该指令的功能是把存储器中的伪描述符装入到 全局描述符表寄存器GDTR中。伪描述符SRC的结构如前文所述结构类型PDESC所示,低字是以字 节为单位的段界限,高双字是段基地址。该指令对标志没有影响。

    (2)装载中断描述符表寄存器指令

        装载中断描述符表寄存器指令的格式如下:
    
        LIDT    QWORD PTR SRC
    
    
        其中操作数SRC是48位(6字节)的存储器操作数。该指令的功能是把存储器中的伪描述符装入到 中断描述符表寄存器IDTR中。伪描述符SRC的结构如前文所述结构类型PDESC所示,低字是以字 节为单位的段界限,高双字是段基地址。该指令对标志没有影响。

    4.装载机器状态字指令

        装载机器状态字指令的格式如下:
    
        LMSW    DST
    
    
        其中操作数DST可以是16位(字)的存储器操作数或寄存器。该指令的功能是把DST的内容装载到 机器状态字。该指令对标志没有影响, 将PE位置为1,便进入保护模式。在80286中,没有控制寄存器,为进入保护模式需要通过该指 令把MSW中的PE位置为1。如果的确是这样,那么LMSW指令后面必须紧跟一条转移指令。
        80386有此指令是为了包含80286的指令集,以便与其兼容。由于80386的控制寄存器CR0的低16位 等同于80286的机器状态字,所以,在为80386编程时,如果需要装载机器状态字,那么最好使用 控制寄存器传送指令。

    5.控制寄存器数据传送指令

        控制寄存器数据传送指令的一般格式如下:
    
        MOV     DST,SRC
    
    
        控制寄存器数据传送指令实现80386的控制寄存器和32位通用寄存器之间的数据传送。所以,操 作数SRC和DST可以是80386使用的三个控制寄存器和任一32位通用寄存器,但不能同时是控制寄 存器。该指令对标志没有影响。

    6.调试寄存器数据传送指令指令

        调试寄存器数据传送指令的一般格式与上面的控制寄存器数据传送指令的格式相同。功能是实 现80386的调试寄存器和32位通用寄存器之间的数据传送。操作数SRC和DST可以是80386使用 的6个调试寄存器和任一32位通用寄存器,但不能同时为调试寄存器。该指令不影响标志。
        80386可使用的6个调试寄存器记为:DR0、DR1、DRW、DR3、DR6和DR7。其它说明与控制寄存器 数据传送指令相同。

    7.测试寄存器数据传送指令

        测试寄存器数据传送指令的一般格式与上面的控制寄存器数据传送指令的格式相同。功能 是实现80386的测试寄存器和32位通用寄存器之间的数据传送。80386使用的2个测试寄存器 是TR6和TR7。其它说明与控制寄存器数据传送指令相同。
     

    [1]

  • 上一篇:实模式和任何特权级下可执行的指令
    下一篇:只能在保护模式下执行的指令