Fork me on GitHub

转载:DOS与windows运行的cpu模式

首先,80386以及80386以后的CPU都是32位的

纯32位windows是不能进入实模式的,重启以后到载入WINDOWS以前都是实模式,也许你会说windows98不是是可以不用重启机器直接进入到纯DOS(实模式)下么

首先,98是个16位和32混编的系统,所以不稳定,但对游戏支持甚好,而且其内核是建立在16位上的(你要是搞过Win32编程就会有所了解),这样的话进入DOS很方便,或者在DOS下一条win命令就可以进入WINDOWS...

但是从NT开始就不行了,2000/XP都是建立在纯32位(NT开始)内核上的,所以很稳定,但是如果不重新启动到DOS下是不能进行实模式操作的,但是考虑程序的兼容问题,为了让以前的16位程序能在32位下运行,80386就提供了虚拟86模式(这和windows无关,是CPU提供的模式,另外可以告诉你,因为80286没有虚拟86模式,只有实模式和保护模式,当时一些流行的16位程序要使用的话必须重启到DOS下,再进到到保护模式),虚拟86模式实际上就是模拟16位的8086
CPU的实模式,但这和实模式有很大区别,最大的因该算是中断被屏蔽或转为windows的异常处理了,这样你要用诸如:int 13h 命令是行不通的,因为windows是建立在保护模式上的,保护模式下有自己的中断模式,如果你要从windows进入实模式的话只有重新启动再到DOS下了。

现在几乎不需要进入实模式了,除非你windows中了毒不能进入,到DOS下重装/恢复/备份系统,还有就是一些硬件底层的破解啦,比如破解还原卡之类的。

进入保护模式是每个32位系统必须的,因为这样系统才能才能利用保护模式提供的保护机制管理和维护自己,程序也就稳定了,

虚拟86模式没什么需要不需要,CPU提供这个模式,程序是16位的时候,系统会自动加载到虚拟86模式中运行...

我们在windows下打开的cmd(别忘了98下叫MS-DOS方式,这个模式仍是在16的内核上,而从NT开始的CMD就是纯32位了!!!!)它在系统中的定义是字符模式(非窗口),这样给一些16位的程序提供了运行环境....

就是这样。

posted on 2013-03-24 19:32  loopever  阅读(403)  评论(0编辑  收藏  举报