当前位置: 代码迷 >> 汇编语言 >> 关于windows下的cmd的有关问题
  详细解决方案

关于windows下的cmd的有关问题

热度:5958   发布时间:2013-02-26 00:00:00.0
关于windows下的cmd的问题
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的功能。
  相关解决方案