新人入门`请教CPU的3种工作模式

Evanue 2008-01-01 12:20:50
我看的王爽的汇编

我在看前言的时候``书上说``我们将在以8086CPU为中央处理器的PC机上学习```但是看得不太明白``所以去看了一下附注1``知道了从80836以后的各种微处理器``都支持这3中工作模式: 实, 保护, 虚拟8086 .

书上是这样说的 :


实模式: 工作方式相当于一个8086.

保护模式: 提供多任务环境的工作方式,建立保护机制(这与VAX小型机类似).

虚拟8086模式: 可从保护模式切换至其中的一种8086工作方式.这种方式的提供可以使用户方便地在保护模式下运行一个或多个
原8086程序.


单看概念``是不明白`看了书上举的例子``要熟悉一点```我在这里把我的疑问和理解说一下``请大家看看对不对或帮我指正一下谢谢```

实模式: 就是相当与在用8086CPU的PC机情况``下工作``

例如: 1.开机后回有很数据不停的滚动``就是按了开机按钮后屏幕上的反映``
2. 在WINDOWS下运行一个DOS下的程序``我们通常编写的C语言程序(黑底白字,不支持鼠标)```
3. 在WINDOWS下运行CMD或是COMMAND````
4. DOS操作系统下的工作模式
5. 单任务操作系统工作模式
这5个例子``我们的电脑都是将CPU切换到了8086的情况下工作

保护模式: 一中支持多任务操作的工作模式.(但是我对后面说的保护机制不明白``哎```)

例如: 一般的WINDOWS下的工作``就是安装了WINDOWS的PC机``开机后的情况
这就是一种保护模式的情况

虚拟8086模式: 从保护模式切换到8086的一中工作方式``这个时候其实就是8086的工作模式`感觉就是实模式

例如: 在WINDOWS下切换到CMD里或是COMMAND里``或是切换到一个DOS程序里
这就是虚拟8086的工作模式
实模式下: CPU切换为8086
保护模式: CPU为当前型号`比如我的机子是P4``那么现在就是P4
虚拟8086: CPU切换为8086

我有些疑问: 1. 保护模式下的保护机制是指什么?``这个不懂``要是可以的话``请讲解一下``谢谢

2. 我对实模式和虚拟8086模式有点分不清楚``还请指教``谢谢``

3. 现在的CPU型号应该都是在80836以上的``并且兼容它的下级型号
比如奔腾4兼容奔腾1,2,3``80836`8086``是不是啊?

4. 介绍保护模式的时候`说的是切换到``其中的一个8086工作方式``
这个"其中的一个"``是指什么意思呢??

我现在刚刚开始起步``期望大家能详细一点就详细一点的给予指点```谢谢大家了先``

...全文
1181 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhl1224 2010-06-22
  • 打赏
  • 举报
回复
参加工作才发现自己懂得很少啊
zhl1224 2010-06-22
  • 打赏
  • 举报
回复
受教了,呵呵
maxwell_paradox 2008-01-07
  • 打赏
  • 举报
回复
电源管理模式,这个是笔记本专用的了,台式机估计很少用的到的。
而且现在也很少提及最大模式最小模式了,因为现在的机器都标配了...
保护模式除上面zmwgreenrain 兄说的flat内存保护机制之外,还有个特点,我补充下,就是权限问题。虽然现在WINDOW系统有4个级别的权限ring 0到ring 3.
但是实际上ring 1和ring 2根本就没用到。
高权限RING 0的指令可以访问低权限RING 3的数据。反之则不成立。
而且保护模式下,程序运行中在进行权限级别的切换时有一套严格的机制,完全不同与实模式下随心所欲地任意调用中断,这也是为什么以前DOS模式下程序病毒肆虐要比现在容易的多。权限的保护机制不但跟操作系统和CPU工作模式有关,而且CPU专门为了保护模式在寄存器组和系统描述符缓冲区上有特别的设计,内容虽然不算复杂但是比较烦琐。限于时间这里暂时不能一一详细介绍了。
有兴趣的可以发信我的邮箱,我们互相讨论交流。
zmwgreenrain 2008-01-02
  • 打赏
  • 举报
回复
在8086中为了让CUP能寻址更大的内存,采用了两个寄存器寻址内存:一个寄存器保存段地址(CS,DS,ES或SS)一个保存偏移量(BX,SI,DI,BP等),其中内存地址为20位(地址总线为20位,能够寻址2的20次方,也就是1M内存),段寄存器保存地址的为高16位,段地址加上偏移地址就是内存中的绝对地址。
于是一个段寄存器能寻址64K的内存,一个程序能选择使用多个段或者一个段,其中.exe使用的是多个段(数据段,代码段,堆栈段),而.com只使用一个段(以上三个段都压缩到代码段中)。

在windows登陆之后运行的基本上都是保护模式下的程序,其实command就是提供了一个运行实模式程序的一种环境,也就是通过使用V86模式。

dos程序现在一般指的是无界面程序吧,没有什么特定的界限,用标准c写的程序只要没有调用windows的api一般都能在无界面的dos环境下运行 :)
zmwgreenrain 2008-01-02
  • 打赏
  • 举报
回复
哦?还真没注意过,只知道可以更改控制寄存器的某一位可以进入V86模式,不知道windows如何进入的,呵呵
Evanue 2008-01-02
  • 打赏
  • 举报
回复
谢谢大家````

Evanue 2008-01-01
  • 打赏
  • 举报
回复
先谢谢```大家``让我有更进一步点的理解``

现在有几个问题```

CMD.EXE和COMMAND.COM````2个的区别是什么``
CMD下是保护模式而COMMAND下是虚拟8086模式``这样说对吗?

还有``DOS程序指的是什么程序```我们通常用C写的程序能叫DOS程序吗?


BAYNPU 2008-01-01
  • 打赏
  • 举报
回复
另外还有一种模式:电源管理模式。
czlyc006 2008-01-01
  • 打赏
  • 举报
回复
另外一楼的同志理解有误,cmd.exe所运行的叫做Win32控制台程序,是属于保护模式下的无GUI应用程序。
真正想要进入V86模式需要在运行中敲command.com
czlyc006 2008-01-01
  • 打赏
  • 举报
回复
严格地说,x86系列CPU的三种工作模式是:实模式、保护模式和系统配置模式。
虚拟8086模式只是保护模式的一个特例。
zmwgreenrain 2008-01-01
  • 打赏
  • 举报
回复 1
按照自己的理解说一下吧

保护模式下的保护机制:
指的是386及以后CUP提供的一种对程序的保护机制,所谓的保护某些程序指的是保护每个程序拥有自己独立的运行环境(也就是自己独立的内存,别的进程不能随便访问),这通过保护模式下的内存分页实现,“保护”了每个程序不受其他进程干扰。同时段(数据段,系统段)和内存页面也都拥有自己的特权级,一般操作系统将自己的数据和代码设置为0特权级(最高),其他程序都是3特权级(最低),一般来说低特权级的代码不能调用高特权级的代码和数据,所以把操作系统“保护”起来了。

实模式:
就是CPU相当于一个8086处理器,处理器刚刚开始加电时默认就是这种模式,也就是说操作系统刚启动时都要经历这个过程。操作系统可以设置cr3寄存器(386CUP之后新加入的寄存器之一)来进入保护模式,要支持多任务操作系统必须使用保护模式。

兼容性:
intel公司把兼容性看得很重要,所有CPU都是向下兼容的,也就是老的程序都能在新的CPU上跑 :)

虚拟8086:
就是指在保护模式下实行的一种兼容措施,使得工作在保护模式的操作系统在不切换运行模式的情况下(切换到实模式代价很高,基本上相当于重启了),使用虚拟8086模式也能“暂时”的运行实模式下的程序,windows中的cmd窗口就是工作在这种模式 :)

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧