+ -
当前位置:首页 → 问答吧 → 80286的保护模式下为什么不能运行8086的程序

80286的保护模式下为什么不能运行8086的程序

时间:2010-12-06

来源:互联网

80286CPU的出现使DOS程序能访问16MB的内存,但是为什么不能运行在8086、DOS下编写的程序?
286保护模式与8086实模式的限制在哪里?我指的是是什么阻碍了8086DOS程序的运行?

作者: mic47   发布时间: 2010-12-06

80286不提供虚拟8086模式。 虚拟8086模式是386以后的cpu才提供的功能。

作者: masmaster   发布时间: 2010-12-06

引进虚拟8086模式, 应该是从80386DX!

作者: masmaster   发布时间: 2010-12-06

那为什么保护模式下就不能运行8086程序?

作者: mic47   发布时间: 2010-12-06

引用 3 楼 mic47 的回复:
那为什么保护模式下就不能运行8086程序?

80386Dx以后,为了兼容以往的8086/88程序,intel提供了虚拟8086模式,这个模式实际上是一个特殊的保护模式。 跟真正的实模式有很大区别的。 例如对bios调用以及直接对底层的访问都是受限的。 所以说, 你拿一个100%的dos程序未必在保护模式下能正常运行。最浅显的例子就是bios int 10H调用,在XP下,打开的虚拟8086模式总是会得到想不到的结果。

作者: masmaster   发布时间: 2010-12-06

楼主可以参考一下《PC技术内幕》,里面第一篇就讲到这些东西啦。

作者: masmaster   发布时间: 2010-12-06