




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 1 580X86的工作方式与存储器物理地址的生成 2 1 5 08086的工作方式与存储器物理地址的生成 8086的工作方式只有实地址方式 3 2 存储器的地址生成 8086CPU的地址引脚有20根 能提供20位的地址信息 可直接对1M个存储单元进行访问 但CPU内部可用来提供地址信息的寄存器都是16位的 那么如何用16位寄存器实现20位地址的寻址呢 4 1 存储器的分段管理 8086的地址寄存器和PC是16位的 它只能管理216 64KB字节地址空间 8086 8088采用了分段结构的内存管理的方法 将指令代码和数据分别存储在代码段数据段堆栈段附加数据段 简城附加段 每一段最大64KB 216个字节 可用16位的地址寄存器管理 5 代码段段基地址 相对于段基地址的偏移量 数据段段基地址 相对于段基地址的偏移量 这些段的段基地址分别由段寄存器CS DS SS ES提供而代码或数据在段内的偏移地址则由有关寄存器或立即数给出 CS DS PC 代码段段基址由CS给出 数据段段基址由DS ES给出 堆栈段段基址由SS给出 6 代码段寄存器CS 存储程序当前使用的代码段的段地址 代码段用来存放程序的指令代码 下一条要读取指令在代码段中的偏移地址由指令指针寄存器IP提供 数据段寄存器DS 用来存放程序当前使用的数据段的段地址 一般来说 程序中所用到的原始数据 中间结果以及最终结果都存放在数据段中 7 堆栈段寄存器SS 用来存放程序当前所使用的堆栈段的段地址 堆栈是在存储器中开辟的一个特定区域 附加数据段寄存器ES 用来存放程序当前使用的附加数据段的段地址 附加数据段通常用于存放字符串操作时的目的字符串 8 程序员在编写汇编语言源程序时 应该按照上述规定将程序的各个部分放在规定的段内 每个源程序必须至少有一个代码段 而数据段 堆栈段和附加数据段则根据程序的需要决定是否设置 9 8086具有20位存储器地址 在对存储单元进行访问 读取指令或读 写操作数 时 必须在地址总线上提供20位的地址信息 以便选中对应的存储单元 CPU的寄存器都是16位 段基址寄存器和偏移地址都是 那么 CPU是如何产生20位地址的呢 CPU提供的用来对存储单元进行访问的20位地址是由BIU中的地址加法器产生的 2 8086处理器存储器物理地址的生成 10 存储器中每个存储单元的地址可有以下两种表示方式 1 逻辑地址逻辑地址是程序设计时使用的地址 它由段基地址和段内偏移地址构成 逻辑地址的表达形式为 段地址 段内偏移地址段内偏移地址 又称为 有效地址EA EffectiveAddress 它是指令或数据相对于他的段基地址的偏移量 在读指令时 段地址由代码段寄存器CS提供 当前要读取指令在代码段中的偏移地址由指令指针寄存器IP提供 在读取或存储操作数时 根据具体操作 段地址由DS ES或SS提供 段内偏移地址由指令给出 11 2 物理地址 CPU与存储器进行数据交换时在地址总线上提供的20位地址信息称为物理地址 物理地址的形成过程如图所示 12 段寄存器内容左移4位二进制位 13 段寄存器内容左移四位后 相当于乘以10H 与16位段内偏移地址 在BIU中的地址加法器中进行相加 形成一个20位的物理地址 这就是由逻辑地址求出物理地址的方法 由逻辑地址求物理地址的公式为 物理地址 段地址 10H 段内偏移地址 例如 假设当前 CS 1000H 取出当前指令后指令指针 IP 4052H 求下一条指令的地址 1000H左移4位后为 10000H 它与4052H相加10000 4052 14052h 下一条指令所在存储单元的物理地址为14052H 14 数据寻址与指令寻址类似区别只是偏移地址一般由指令给出 而不是唯一的由IP给出 段寄存器也会有差异 15 1 5 180X86的工作方式 8086 只有实地址方式80286 实地址方式 虚地址保护方式80386 80486 实地址方式 虚地址保护方式 虚拟8086方式Pentium 实地址方式 虚地址保护方式 虚拟8086方式 系统管理方式所有处理器的实地址方式都和8086实地址方式相同复位后 全部80X86处理器都工作在实地址方式 16 1 实地址方式 与8086相同 只能寻址1MB存储器空间 存储器20位物理地址的生成与8086相同物理地址 段寄存器左移4位 段内偏移地址 17 2 保护方式 又叫虚地址保护方式 支持虚拟存储器 多任务 特权级和特权保护的工作方式 具有32位物理存储器地址 可管理4GB物理内存 由主内存和辅助存储器提供的虚拟内存空间可达64TB在该方式下 段寄存器的内容已不是段基地址 而是段选择子 由该段选择子在段描述符表中选择一个段描述符 段描述符中给出了32位的段基地址 段的长度限制 特权级 以及其他段的属性描述 18 3 虚拟8086方式 是一种在32位保护方式下支持16位实地址的应用程序运行的特殊方式处理器工作在32位保护方式 但又虚拟出8086的实地址方式 通过操作系统管理 可以在保护方式下虚拟出多个8086处理器 8086虚拟机 19 4 系统管理方式 为系统管理而设置 系统设计人员可以利用该方式实现高级管理功能 例如对电源实施管理 降低功耗等对操作系统和正在运行的程序实施管理提供安全管理 20 5 四种方式的切换 21 1 5 280X86存储器物理地址的生成 1 实地址方式下物理地址的生成 与8086相同 22 2 保护方式下存储器物理地址的生成 实模式是模仿8086工作 保护模式下 CPU寻址内存的机制与实模式不同 它首先需要满足保护规则 然后才能进行寻址 80X86是多任务系统保护规则 每个任务 分配一定的内存资源和对内存的读写权限 如果某个任务对内存的访问超过了分配给它的内存区域或超越了读写权限 CPU将拒绝这次访问 并给出告警 保护模式下 线性地址 32位基地址 偏移地址 在实模式下 物理地址 段基地址 4 偏移地址保护模式下 段寄存器仍然是16位 但它已不是段基地址 而是段选择子 通过它选择段描述符 从段描述符中获得32位基地址 23 1 在保护模式下 新的寄存器 全局描述附表寄存器GDTR局部描述附表寄存器LDTR中断描述附表寄存器IDTR任务寄存器TR原来的通用寄存器扩展为32位寄存器 EAX EBX ECX EDX 标志寄存器EFLAG有了更多的定义位 控制寄存器CR0 CR1 CR2 CR3被实际使用 在保护模式下 16位的段寄存器CS DS ES SS的内容作为段选择子 24 2 段选择子 段选择子被用于在描述符表中选择一个段描述符 再从描述符中获得32位的段基地址 该基址与32位的偏移地址相加 得到线性地址 线性地址 按顺序编号的地址 DI 在段描述符表中检索描述符 描述符表可以有8192个描述符TI 描述符表指示标志 0 从GDT检索 1 从LDT检索描述符RPL 请求特权级 0 3级 3级最低 16位段选择子位 25 3 描述符表和描述符表寄存器在寻址过程中的作用 描述符表 RAM中设置的一个区间 在该区间存放有很多描述符 描述符 为一个特定的数据结构 每个描述符占8个字节 26 G Granularity 粒度位 表示段的长度是以字节为单位还是以页为单位 0 字节 l 页 D Default 表示缺省操作数的位数 当指令中没有明确操作数或偏移量的位数时 根据D位来确定 0 16位 1 32位 该位仅用于代码段描述符 P Present 表示段是否存在于物理存储器中 0 不存在 1 存在 注意 在启用页功能的情况下 即使P为1 所描述的段也未必整个都在物理存储器中 可能该段的若干虚拟页面被安排在辅存中 DPL DescriptorPrivilegeLevel 表示段的特权级 优先级 段的特权级分成0 1 2 3四级 0的级别最高 3的级别最低 一般用户程序使用的段特权级为3 而操作系统及其他内核心程序的段特权级特权级为0 当前程序段 代码段 的DPL叫当前特权级 CurrentPrivilegeLevel CPL 27 DT DeseriptorType 表示描述符类型 1 存储器的段描述符 0 系统的段描述符 门描述符 A Accessed 表示从上次该位被清0后 该段是否被访问过 0 未被访问过 1 被访问过 在物理存储器中进行段的替换时要用到此位 例如 P 1 A 0的段表示在存储器中且未被访问过 可以被替换掉 TYPE 共包含3位 用来表示段的存取权限 如只能读 只能执行 可读 可写等 这3位对于代码段和数据段的含义有所不同 如下表所示 28 E E 0表示数据段 E 1表示代码段 ED ExpansionDirection 仅对数据段有意义 它指明段的地址范围在使用时是从基地址向高位地址方向扩展 ED 0 还是从段的最大偏移量处向低位地址方向扩展 ED 1 对一般数据段来说 ED位取0 对堆栈段来说 若采用下堆式 随着入栈数据的增加 栈指针的值减小 ED位应取1 目前PC系列机的堆栈一般采用下堆式 故ED位取1 W Writable 仅适用于数据段 表示这个数据段是 W 1 否 W 0 可被写入 该位为重要数据提供了写保护措施 29 C Conforming 仅适用于代码段 它表示段被一个较低特权的程序 任务 所调用时 是 c 0 否 C 1 要改变CPL的值 如果C 1 则该描述符所描述的段被称为 符合的代码段 或 一致的代码段 因为这个代码段被调用时 不需要改变CPU的值 R Readable 仅对代码段有意义 它表示该代码段是 R 1 否 R 0 可被读取 当然 对程序段来说 通常都是 可执行的 R位取O可防止用户程序对存储器里的 目标程序代码 做手脚 R位为0的描述符只能加载到CS的描述符寄存器 而R位为l的描述符可加载到CS DS ES Fs及GS的描述符寄存器 此时 可以读取段内的数据 程序代码 30 4 描述符表寄存器 GDTR IDTR 48位寄存器 存放全局描述符表GDT 中断描述附表IDT在内存中的32位线性地址和16位的界限值 LDTR 16位寄存器 用于存放选择子 通过它 在全局描述符表中获得当前LDT的基地址 LDT是由操作系统针对某一特定任务建立的 通过描述符 可以很好的管理内存 实现不同任务间的保护 当然 使用也变得比8086的是模式要复杂的多了 31 5 寻址 段寄存器 CS DS ES SS等 作为选择子 高13位是描述符表的偏移地址 TI 0 表示是全局任务寻址 这时不用LDTR 直接通过段寄存器中的选择子和GDTR获得全局描述符 然后获得线性地址 32 段寄存器的第三位T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公共投资项目造价控制与咨询服务合同
- 混凝土泵送服务与施工合同
- 社会保障专业试题及答案
- 机械专业精彩面试题及答案
- 小字教学课件图片高清无水印
- 2025至2030中国氯氯化铜杀菌剂行业项目调研及市场前景预测评估报告
- 蛋糕裱花教学课件图片
- 2025至2030氧化铝翻板行业项目调研及市场前景预测评估报告
- 2025至2030中国遗传性血管性水肿药物行业项目调研及市场前景预测评估报告
- 临床化验单解读
- 《中国香文化发展史》课件
- 大型活动医疗保障应急预案
- BEC商务英语初级考试历年真题及答案6套
- 消除“艾梅乙”医疗歧视-从我做起
- 工程项目规模分级标准(评审)
- 北师大版小学数学六年级上册《圆》单元作业设计
- 初中物理、化学、生物理科实验操作考核表及评分细则
- 不违反计划生育协议书模板
- 07FD02 防空地下室电气设备安装
- 《矿山安全落后工艺及设备淘汰目录(2024年)》
- 《支气管扩张》课件
评论
0/150
提交评论