Intel manual:
15.2.VIRTUAL-8086 MODE
Virtual-8086 mode is actually a special type of a task that runs in protected mode. When the
operating-system or executive switches to a virtual-8086-mode task, the processor emulates an
Intel 8086 processor. The execution environment of the processor while in the 8086-emulation
state is the same as is described in Section 15.1., !°Real-Address Mode!± for real-address mod
including the extensions. The major difference between the two modes is that in virtual-8086
mode the 8086 emulator uses some protected-mode services (such as the protected-mode inter-
rupt and exception-handling and paging facilities).
As in real-address mode, any new or legacy program that has been assembled and/or compiled
to run on an Intel 8086 processor will run in a virtual-8086-mode task. And several 8086
programs can be run as virtual-8086-mode tasks concurrently with normal protected-mode
tasks, using the processor!ˉs multitasking facilities
保护模式教程:在V86模式下,CPL=3,执行特权指令时,或者要引起出错码为0的通用保护故障,或者要引起非法操作码故障。
在V86模式下,输入/输出指令的敏感条件有所变化。指令CLI和STI的敏感条件不变,由于CPL=3,所以如果IOPL <3,那么执行CLI或STI指令将引起通用保护故障。输入/输出指令IN、INS、OUT或OUTS的敏感条件仅仅是当前V86任务TSS内的I/O许可位图,而忽略EFLAGS中的IOPL。输入/输出指令IN、INS、OUT或OUTS是否可以执行与CPL是否小于IOPL无关,而直接由I/O许可位图对应位决定,如果输入/输出指令所使用I/O地址对应的I/O许可位图内的各位都位0,则输入输出指令可正常执行,否则引起通用保护故障。
此外,在V86模式下,指令PUSHF、POPF、INT n和IRET却对IOPL敏感。也就是说,在V86模式下,当IOPL <3时,执行指令PUSHF、POPF、INT n及IRET会引起出错码为0的通用保护故障。
采取上述措施的目的是使操作系统软件可以支持一个“虚拟EFLAGS”寄存器。
///////////////////////////////////////////////////////////////////////
那么windows下的cmd是一个建立在v86保护模式上的shell控制台应用程序吗?
------解决方案--------------------------------------------------------
实模式:8086
虚拟8086模式:可以从保护模式下切换到8086
保护模式:提供多任务环境
NT下的command才是虚拟8086模式。
cmd是保护模式下的一个shell。
------解决方案--------------------------------------------------------
cmd是windows下的一个dos虚拟机,如果采用切换到实模式的方法让windows用户使用dos功能(windows 98就提供了该功能),那么在实模式下,windows就失去了控制权,此时windows上面的杀毒软件对系统的保护会完全失去,所以windows 2000\xp就不再允许切换到实模式,而是只提供一个虚拟机,甚至windows系统文件也可能被dos用户误删除,我想基于上面的原因,或者还有其他原因,所以才仅仅提供了cmd,而删去了win98下重启到dos的功能。