80386的处理器有3种工作模式,分别是:实模式、保护模式和虚拟86模式。 实模式和虚拟86模式是为了和80386处理器兼容二设置的。 实模式下,80386就相当于一个快速的8086处理器。 保护模式是80386的主要工作模式。 在此模式下,80386可以有4GB的寻址空间,同时支持多任务,内存分页管理和优先级保护的功能。 而虚拟86模式是为了兼容8086程序而设计的,在此模式下可以支持任务切换,内存分页和优先级,但寻址方式和8086相同,寻址空间只有1MB。
实模式
80386处理器在实模式下和8086是一样的,以 “段地址 × 16 + 偏移地址” 的方式寻址,这时它的32位地址线只使用了低20位 (8086的地址线为20根,寻址1MB)。 在实模式下,所有段都是可读,可写和可执行的。
实模式下80386不支持优先级,所有指令都相当于工作在特权级(优先级 0),所以可以执行所有特权命令,包括读写控制寄存器CR0等。实际上。 80386就是复位或加电后,通过实模式启动并初始化控制寄存器,GTDR,LTDR,IDTR,和TR等管理寄存器,然后再加载CR0,修改控制寄存器CR0,使它的PE位为1,最后进入保护模式。 实模式下,同样使用中断向量表来中断服务。
保护模式
在保护模式下,它的所有功能都是可用的。 32位的地址线都可供寻址,物理寻址达4GB。 支持内存分页机制,提供对虚拟内存的良好支持。
保护模式下80386支持多任务,可以依靠一条指令实现任务切换。任务环境的保护工作是处理器自动完成的。80386还支持优先级机制(0-3),操作系统运行在最高优先级0,应用程序运行在比较低的级别。
DOS运行于实模式,windows运行于保护模式。
虚拟86模式
虚拟86模式是为了在保护模式执行8086程序而设置的,就是为了向下兼容以前的程序。
虚拟86模式是以任务形式在保护模式上执行,并且支持任务切换和内存分页。 也就是说,保护模式下,可以运行多个8086程序,采用 “段地址 × 16 + 偏移地址” 的方式形成线性地址(这里不是物理地址),寻址为1MB。很显然这里的 “1MB” 并非同一位置,而是操作系统利用分页机制分配的线性地址,然后映射到不同的物理地址。
补充
80386的3种模式各有特点且相互联系。实模式可以通过指令切换到保护模式,也可以通过指令从保护模式退回实模式;虚拟86模式以保护模式为基础,在保护模式和虚拟86模式之间相互切换;实模式和86模式之间不能相互直接切换。
参考:《Windows环境下32位汇编语言程序设计》