CPU的实模式与保护模式简介.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
16位微处理器8086寄存器组成8086/8088包括:4个16位的数据寄存器,2个16位的指针寄存器,2个16位变址寄存器,分成四组。通用寄存器中,这些寄存器除完成规定的专门用途外,均可用于传送和暂存数据,可以保存算术逻辑运算的操作和运算结果。?段寄存器能在8086 中实现1M物理空间寻址,并可与8080 CPU进行兼容。段寄存器都是16位的,分别称为代码段(Code Segment)寄存器CS、数据段(Data Segment)寄存器DS、堆栈段(Stack Segment)寄存器SS,附加段寄存器。?标志寄存器在8086中有一个16位用于反映处理器的状态和运算结果的某些特征。(其中只有9位有定义)这些标志位分为两类:其一是运算结果标志,主要用于反映处理器的状态和运算结果特征。(例如:进位标志、零标志、符号标志、溢出标志等)其二是状态控制标志,它控制着处理器的操作。要通过专门的指令才能使状态控制标志发生变化。(例如:方向标志、中断允许标志、追踪标志)?内存的寻址(实模式)8086 CPU有20根地址线,可直接寻址的物理地址空间为1M。尽管8086/8088内部的ALU每次最多进行16位运算,但存放存储单元地址偏移的指针寄存器都是16位的,所以8080/8086通过内存分段和使用段寄存器的方法来有效地实现寻址1M的空间。?存储单元的逻辑地址由段值和偏移两部分组成,用如下形式表示:???????????段值:偏移所以根据逻辑地址可以方便地得到存储单元的物理地址,计算公式如下:???????????物理地址(20位) = 段值*16+偏移段值通过段寄存器的值来取得,偏移可由指令指针的IP或其他可作为内存指针使用的寄存器给出。偏移还可以直接用16位数给出。指令中不使用物理地址,而使用逻辑地址,由总线接口单元BIU按需要根据段值和偏移自动形成20位物理地址。?32位微处理器1985年,真正的32位微处理器80386DX诞生,为32位软件的开发提供了广阔的舞台。80386寄存器的宽度大多是32位,可分为如下几组:通用寄存器、段寄存器、指令指针及标志寄存器、系统地址寄存器、调试寄存器、控制寄存器和测试寄存器。应用程序主要使用前面三组寄存器,只有系统才会使用其他寄存器。[说明]由于在实模式下,段的最大范围是64KB,所以EIP的高16位必须全是0,仍相当于16位的IP作用。注意,在32位模式下,段寄存器仍然是16位。?80836中,标志寄存器也扩展到了32位,记为EFLAG。其中,增加了IO特权级IOPL:当前运行程序或任务的CPL必须小于或等于这个IOPL才能访问I/O地址空间。嵌套任务标志NT(Nest Task)重启动标志RF(Reset Flag)虚拟8086标志VM:当设置该标志时,就开启虚拟8086方式,当复位该标志时,则回到保护模式。控制寄存器控制寄存器(CR0~CR3)用于控制和确定处理器的操作模式以及当前执行任务的特性。4个控制寄存器都是32位的。CR0:含有控制CPU操作模式和状态的标识CR1:保留不用CR2:存储导致页错误的线性地址CR3:含有页目录表的物理内存基址?CR0中的保护控制位:PE:CR0的位0是启用保护(Protection Enable)标志。(CR0的最低位)当设置该位时即开启了保护模式,当复位时即进入实地址模式。这个标志仅开启段级保护,而没有启用分页机制。若要启用分页机制,那么PE和PG都要置位。PG:CR0的位31是分页(Paging)标志。(CR0的最高位)当设置该位时即开启了分页机制,当复位时则禁止分页机制,此时所有线性地址等同于物理地址。注意,在开启这个标志之前必须已经开启PE标志,否则CPU会产生一个一般保护性异常。改变PG位的代码必须在线性地址空间和物理地址空间中具有相同地址,这部分具有相同地址的代码在分页和未分页世界之间起着桥梁的作用。如果PE=0、PG=0,处理器工作在实地址模式下。(兼容早期的实模式操作系统)如果PE=1、PG=0,处理器工作在无分页机制的段保护模式下(兼容段式管理的操作系统)如果PE=1、PG=1,处理器工作在段页式保护模式下?在系统刚上电时,处理器被复位成PE=0和PG=0(即实模式状态),以允许引导代码在启用分段和分页机制之前能够初始化这些寄存器和数据结构。??【程序原理】CPU是如何处理物理地址的?在实模式下用段寄存器左移4位与偏移量相加。在保护模式下用段描述符中的基址加偏移量。这两者其实是一样的。当Intel把80286推出时,其地址空间变成了24位,则从8086的20位到24位,十分自然地要加大段寄存器才行。实际上,段寄存器和指针都被加大了,只是由于保护的原因,加大的部分没有被程序看见,到了80386之后,地址又从24位加大到32位。在8086中,CP

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档