第2章实模式下存储器组织与寻址方式ppt课件_第1页
第2章实模式下存储器组织与寻址方式ppt课件_第2页
第2章实模式下存储器组织与寻址方式ppt课件_第3页
第2章实模式下存储器组织与寻址方式ppt课件_第4页
第2章实模式下存储器组织与寻址方式ppt课件_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本章内容 实模式下存储器的组织方式 实模式下存储器的寻址方式 第二章微处理器的结构及存储器组织 本章要求 教学重点及难点 寄存器组织 存储器地址 1 了解微处理器的结构 掌握80X86处理器寄存器结构 2 理解存储器地址和内容的概念 3 熟悉实模式下存储器地址的组成方式 计划学时 4学时 2 1微处理器的结构 计算机通常由几部分组成 控制器 运算器 存储器 输入设备和输出设备 其中把控制器和运算器两部分集成在一个芯片上 称为微处理器 即中央处理器CPU CentralProcessingUnit 8086CPU结构示意图 8个16位寄存器分别为AX BX CX DX SP BP SI和DI 标志寄存器为FLAGS PentiumCPU PentiumIVCPU 2 1 280 x86和Pentium微处理机的寄存器结构 8086CPU寄存器结构 通用寄存器 控制寄存器 段寄存器 数据寄存器 指针寄存器 变址寄存器 IP指令指针寄存器 FLAGS标志寄存器 数据寄存器用来保存操作数或运算结果等 累加器 用于算术 逻辑运算以及与外设传送信息等 基址寄存器 常于存放存储器地址 计数器 作为循环或串操作等指令中的隐含计数器 数据寄存器 用来存放双字数据的高16位 或存放外设端口地址 SP用于存放当前堆栈段中栈顶的偏移地址 BP用于存放堆栈段中某一存储单元的偏移地址 在字符串操作中 SI和DI都具有自动增量或减量的功能 保存下一次将要取出指令的偏移地址 IP的内容由微处理器硬件自动设置 有一些指令可改变IP的值 如转移指令 子程序调用指令等 8086CPU的 个16位的段寄存器 CS DS SS ES 80386以后增添了FS和GS 段寄存器用来确定该段在内存中的起始地址 80386及后继机型的通用寄存器 16 32 64位机型的通用寄存器 以累加器为例 AH AL AX 16位 EAX 32位 RAX 64位 0 0 0 63 15 31 PSW ProgramStatusWord 为程序状态字寄存器 这是一个16位寄存器 也称为标志寄存器 用来反映微处理器在程序运行时的某些状态 PSW寄存器中有9个标志位 其中6个标志位 OF SF ZF AF PF CF 作为状态标志 记载了刚刚执行完算术或逻辑运算指令后的某些特征 另外三个标志位为DF IF TF作为控制标志 完全由编程者设定 在执行某些指令时起控制作用 程序状态字寄存器FLAGS PSW 8086的标志寄存器 功能 存放条件码标志 控制标志和系统标志 8086的标志寄存器 80286的标志寄存器 FLAGS标志寄存器 PSW 80386及后继机型 有3个32位的专用寄存器 EIP ESP和EFLAGS VM 80386 AC 80486 ID VIP VIF 313029282726252423222120191817161514131211109876543210 Pentium IOPL I O特权级VIP 虚拟中断未决标志NT 嵌套任务标志VIF 虚拟中断标志RF 重新启动标志VM 虚拟8086模式位AC 对准检查方式位ID 标识标志 OF OverflowFlag 溢出标志 在运算过程中 如操作数超出了机器所能表示的范围 则称为溢出 此时OF位置 1 否则置 0 SF SignFlag 符号标志 记录运算结果的符号 结果为负时置 1 否则置 0 ZF ZeroFlag 零标志 运算结果为0时ZF位置 1 否则置 0 AF AuxiliarycarryFlag 辅助进位标志 记录运算时第3位 半个字节 产生的进位值 例如 执行加法指令时第3位有进位时置l 否则置0 该标志与操作数长度无关 状态标志 PF ParityFlag 奇偶标志 若操作结果的低8位中含 1 的个数为偶数时 则PF置 1 否则PF置成 0 注意 PF只检查操作结果的低8位 与该指令操作数的长度无关 CF CarryFlag 进位标志 当进行算术运算时 如果最高位产生进位 加法 或借位 减法 则CF置 1 否则置 0 CF也可在移位类指令中使用 用它保存从最高位 左移时 或最低位 右移时 移出的代码 0或1 标志位的符号表示 DEBUG 2 2实模式下的存储器组织 实模式 全称为实地址存储管理操作模式 程序与数据运行在实际存储空间 无存储保护 实模式来源 来源于8086微处理器 实模式存储管理方式 分段方式 注意 80286 Pentium尽管寻址空间比8086 8088大 但为了兼容 实模式存储空间仍为1MB 采用同样分段方式管理 例如 地址1234H其中大写H 或小写h 表示是16进制数 2 2 1存储单元的地址和内容 1 存储单元的地址定义 将存储单元编号 这个编号就是存储器地址 表示 用十六进制数来表达地址 在存储器中 每一个字节单元都有一个与之对应的 唯一的存储器地址 称为物理地址 对于16位字长的PC机 8086 由两个字节组成一个字 Word 其位编号如下 每一个字节单元都有一个与之对应的单元地址 对于多字节单元 字 双字 4字等 其地址同样是采用最低位字节地址来表示的 2 存储单元的内容定义 存储单元中存放的信息称为该存储单元的内容表示 存储地址加 如果用X表示某存储单元的地址 则X单元的内容可以表示为 X 假如X单元中存放着Y 而Y又是一个地址 则可用 Y X 来表示Y单元的内容 0004H字节单元的内容 0004H 34H0004H字单元的内容 0004H 1234H 0004H字单元的内容为1234H 表示为 0004H 1234H 0004H字节单元存放的信息为34H 表示 0004H 34H 字单元由两个字节单元组成 其地址采用它的低地址来表示 字存入存储器 低位字节存入低地址单元 高位字节存入高地址单元 假如X单元中存放着Y 而Y又是一个地址 则可用 Y X 来表示Y单元的内容 直接表示1234H字单元的内容 S 1234H 2F1EH 直接给出S的单元地址 1234H 2F1EH 例如 1234H字单元的内容为S 有两种表示方式 间接表示1234H字单元的内容 S 0004H 1234H 2F1EH S的单元地址存放在0004H字单元中 0004H 1234H 从0004H字单元中取出S的单元地址 再把S的内容读出来 0004H 2F1EH 例 某存储器如图所示 试读出对应单元的内容 1 字节单元 4002H 2 字单元 4002H 3 双字单元 4002H 4 读出字单元 5080H 有几种方式 解 1 字节单元 4002H 80H 2 字单元 4002H 5080H 3 双字单元 4002H 10A05080H 4 字单元 5080H 7459H 4002H 7459H 2 1 2存储器地址的分段 1 分段的原因及如何分段原因 8086 8088CPU有20根地址总线A19A18 A1A0 可以访问存储器的最大容量为 220B 1024KB 1MB 在8086CPU中所有可用来存放地址的寄存器都是16位的 那么在16位字长的机器里 用什么办法来提供20位地址呢 解决方法 在IBMPC机里采用了存储器地址分段的办法 把1MB的存储空间划分成若干个段 Segment 每个段可由1 64KB 即65536B 个连续的字节单元组成 每个段是一个可独立寻址的逻辑单位 在程序设计中 需要设立几个段 每个段有多少个字节以及每个段的用途完全由用户自己确定 同时每个段中存储的代码或数据 可以存放在段内任意单元中 分段的基本规则 在编制程序时 要把存储器划分成段 每个段最大可达64KB 这样段内地址可以用16位表示 PC机对段的起始地址有限制 段不能起始于任意地址 而必须从任一小段 Paragraph 的首地址开始 机器规定 从0地址开始 每16个字节为一小段 00000 00001 00002 0000E 0000F 00010 00011 00012 0001E 0001F 00020 00021 00022 0002E 0002F 在十六进制表示的地址中 最低位为0 即20位地址的低4位为0 2 段地址和偏移地址段地址 表示一个段的开始偏移地址 在段内相对于段起始地址的偏移值 如当偏移量为 0 时 就在这个段的起始单元 当偏移量为0FFFFH时 就是这个段 最大 最末一个字节单元 CPU访问主存必须传送出物理地址 而用户编程则使用逻辑地址 每个存储单元都有两种形式的地址 物理地址 PhsysicalAddress 和逻辑地址 LogicalAddress 每一个存储单元的物理地址是唯一的 就是这个单元的地址编码 在程序设计中 程序员使用的是逻辑地址 而不使用物理地址 这不仅有利于程序的开发 且对存储器的动态管理也是有利的 一个逻辑地址是由段地址和偏移地址 OFFSET 两部分组成 而且都是无符号的16位二进制数 3 物理地址的形成 计算公式 物理地址 段地址 10H 偏移地址 每个存储单元只有唯一的物理地址 但它却可以由不同的段地址和不同的偏移地址组成 表示范围 00000H FFFFFH 例 计算下列存储单元的物理地址 1 2000 3000 2 2100 2000 3 2280 0800 4 2250 0500 解 1 物理地址 2000H 10H 3000H 23000H 2 物理地址 2100H 10H 2000H 23000H 3 物理地址 2280H 10H 0800H 23000H 4 物理地址 2250H 10H 0500H 22A00H 除非专门指定 如用户自行设定之外 在一般情况下 各段在存储器中的分配是由操作系统负责的 每个段可以独立地占用64KB存储区 各段也允许部分重叠或完全重叠 4 段地址与段寄存器实模式下 在8086 Pentium微处理机中 代码段的段地址放在CS中 数据段的段地址放在DS中 堆栈段的段地址存放在SS中 附加段的段地址存放在ES中 段分配举例 设代码段中的程序占有16KB 4000H 存储区 数据段占有2KB 800H 存储区 堆栈段占有1KB存储区 代码段的区域本可以为01000H 10FFFH 64KB 由于程序区只需要16KB 所以程序区结束后的第一个小段的首地址就作为数据段的起始地址 05000H 而数据段仅需2KB 则数据段结束后的第一个小段的首地址又成为堆栈段的起始地址 05800H 这样 代码段和数据段及堆栈段重叠在一起了 代码段 物理地址 01000H 10FFFH 代码段实际使用16KB 04FFFH 数据段 05000H 057FFH 数据段实际使用2KB 堆栈段 05800H 例 已知 CS 1000H DS 4000H 其中代码段大小为1KB 数据段大小为64KB 试画出对应储存器分段的示意图 要求标出首尾地址 分析 对于代码段 由题意 大小为1KB 即对应的偏移地址为 0H 3FFH 且CS为1000H 则对应的物理地址为 10000H 103FFH对于数据段 由题意 大小为64KB 即对应的偏移地址为 0H FFFFH 且DS为4000H 则对应的物理地址为 40000H 4FFFFH 10000H 103FFH 40000H 4FFFFH 4000 0000 4000 FFFF 例 已知CPU各段寄存器的内容为 CS 3000H DS 1060H ES 1140H SS 2200H SP 0200H其中代码段大小为16KB 数据段 附加段大小为64KB 试画出对应储存器分段的示意图 要求标出首尾地址 分析 对于代码段 大小为16KB 即对应的偏移地址为 0H 3FFFH 且CS为3000H 则对应的物理地址为 30000H 33FFFH对于数据段 大小为64KB 即对应的偏移地址为 0H FFFFH 且DS为1060H 则对应的物理地址为 10600H 205FFH对于附加段 大小为64KB 即对应的偏移地址为 0H FFFFH 且ES为1140H 则对应的物理地址为 11400H 213FFH附加段与数据段重叠 重叠区域从11400H 205FFH 对于堆栈段 SP 200H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论