《微机原理与接口技术》第2章8086微处理器2存储器_第1页
《微机原理与接口技术》第2章8086微处理器2存储器_第2页
《微机原理与接口技术》第2章8086微处理器2存储器_第3页
《微机原理与接口技术》第2章8086微处理器2存储器_第4页
《微机原理与接口技术》第2章8086微处理器2存储器_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、2.1.2.3 8086 的存储器组织的存储器组织 一、存储器一、存储器地址空间和数据存储格式地址空间和数据存储格式 8086 的存储器是以字节(8 位)为单位组织的。它们具有 20 条地址总线,所以可寻址的存储器地址空间容量为220 B(约1 MB)。每个字节对应一个唯一的地址,地址范围为0220-1(用十六进制表示为 00000FFFFFH)。如下图 所示。 存储器内两个连续的字节,定义为一个字。一个字中的每个字节,都有一个字节地址,每一个字的低字节(低 8 位)存放在低地址中, 高字节(高 8 位)存放在高地址中。 字的地址指低字节的地址。各位的编号方法是最低位(LSB)为位 0。一个字

2、节中,最高位(MSB)编号为位 7; 一个字中最高位的编号为位 15。 8086 允许字从任何地址开始。字的地址为偶地址时,称字的存储是对准的,若字的地址为奇地址时,则称字的存储是未对准的。 二、存储器二、存储器的分段和物理地址的形成的分段和物理地址的形成 从前面的介绍可知,8086 CPU地址总线 20 条, 存储器地址空间为 1 MB。但CPU内部可以提供地址的寄存器BX、 IP、SP、BP、SI和DI及算术逻辑运算单元ALU都是 16 位, 只能直接处理 16 位地址,即寻址范围为 64 KB, 因此, 扩大寻址范围成为一个难题。8086 CPU巧妙地采用了地址分段方法, 将寻址范围扩大

3、到 1 MB。 在 8086 中,把 1 MB的存储器空间划分成若干个逻辑段, 每段最多为空间容量是 64 KB的存储单元。各逻辑段的起始地址必须是能被 16 整除的地址,即段的起始地址的低 4 位二进制码必须是 0。一个段的起始地址的高 16 位被称为该段的段地址。 显然,在 1 MB的存储器地址空间中,可以有216个段地址。 任意相邻的两个段地址相距 16 个存储单元。段内一个存储单元的地址,可用相对于段起始地址的偏移量来表示,这个偏移量称为段内偏移地址,也称为有效地址EA。 偏移地址也是 16 位的,所以,一个段最大可以包括一个 64 KB的存储器空间。 由于相邻两个段地址只相距 16

4、个单元,所以段与段是互相覆盖的,如下图 所示。 每个存储单元都有一个物理地址,物理地址就是存储单元的实际地址编码。在CPU与存储器之间进行任何信息交换时,需利用物理地址来查找所需要访问的存储单元。 逻辑地址由段地址和偏移地址两部分组成。段地址和偏移地址都是无符号的 16 位二进制数,常用 4 位十六进制数表示。 逻辑地址的表示格式为:段地址 偏移地址。例如 8000 0100 表示段地址为 8000H,偏移地址为 0100H。上述格式中的段地址有时用段寄存器代替。 知道了逻辑地址, 可以求出它对应的物理地址:物理地址=段地址10H+偏移地址 (3 - 1) 因此 8000 0100 的物理地址

5、为 80100H。 8086 CPU中BIU单元的加法器用来完成物理地址的计算, 如下图 所示。 在访问存储器时,段地址总是由段寄存器提供的。8086 微处理器的BIU单元设有 4 个段寄存器(CS、 DS、 SS、 ES), 所以CPU可通过这 4 个段寄存器来访问 4 个不同的段。 8086/8088CPU中有一个地址加法器,它将段寄存器提供的段地址自中有一个地址加法器,它将段寄存器提供的段地址自动乘以动乘以10H即左移即左移4位,然后与位,然后与16位的偏移地址相加,并锁存在物理位的偏移地址相加,并锁存在物理地址锁存器中。地址锁存器中。物理地址物理地址=段基址段基址 * 10H +偏移地

6、址。偏移地址。段基址:段基址:CS、DS、ES、SS。偏移地址:偏移地址:IP、DI、SI、BP、SP等。等。 所谓段基址就是逻辑段的首地址,存放在所谓段基址就是逻辑段的首地址,存放在CS、DS、ES、SS4个个16位寄存器中。位寄存器中。 所谓偏移地址是指一个存储单元与它所在段的基址之间的距离(所谓偏移地址是指一个存储单元与它所在段的基址之间的距离(以字节数计)。以字节数计)。段寄存器值段寄存器值偏移量偏移量+物理地址物理地址16位位4位位16位位20位位存储器物理地址的计算方法存储器物理地址的计算方法三、信息的信息的分段存储与段寄存器的关系分段存储与段寄存器的关系 段寄存器的利用不仅使存储

7、器地址空间扩大到 1 MB, 而且为信息按特征分段存储带来了方便。存储器中的信息可分为程序、 数据和计算机的状态等信息。为了操作方便,存储器可相应地划分为:程序区,该区存储程序的指令代码;数据区, 它存储原始数据、中间结果和最后结果;堆栈区,用以存储需要压入堆栈的数据或状态信息。段寄存器的分工是: 代码段寄存器CS划定并控制着程序区;数据段寄存器DS和附加段寄存器ES控制着数据区;而堆栈段寄存器SS对应着堆栈存储区。 下表列出了各种类型访问存储器时所要使用的段寄存器和段内偏移地址的来源,它规定了为各种目的访问存储器时所形成的 20 位物理地址的原则。这个表的要点如下: (1) 任何类型访问存储

8、器时,其段地址要么由默认段寄存器提供,要么由“指定”的段寄存器提供。所谓默认段寄存器是指在指令中不用专门的信息指定另外一个段寄存器的情况。 这时就由默认段寄存器提供访问内存的段地址。实际程序设计时,绝大多数属于这种情况, 因此要熟记各种类型访问内存时的段寄存器。有几种类型访问存储器时允许指定另外的段寄存器,这为访问不同的存储器段提供了灵活性。段寄存器的指定是靠在指令码中增加一个字节的前缀码实现的。有些类型访问存储器时不允许指定另外的段寄存器,它们是: 为取指令码访问内存时,段寄存器一定是CS;堆栈操作时, 段寄存器一定是SS;字符串处理指令的目的地址,其段寄存器一定是ES。 (2) 段寄存器D

9、S、 ES和SS的内容是用传送指令置入的, 但任何传送型指令不能向段寄存器CS中置入数。更改段寄存器的内容, 将意味着存储区的移动。这说明无论程序区、数据区还是堆栈区都可以不限于 64 KB的容量,都可以通过重置段寄存器内容的方法予以扩大,而且各存储区都可以在存储器中浮动。(3)、堆栈段的使用、堆栈段的使用 所谓堆栈是在存储器中开辟一个区域,用来存放需要暂时保存的数据,其工作方式是“先进后出”或“后进先出”的方式。 8086系统中的堆栈段是由段定义语句在存储器中定义的一个段,堆栈段容量小于等于64K字节。段基址由堆栈寄存器SS指定,栈顶由堆栈指针SP指定,堆栈地址由高向低增长,栈底设在存储器的高地址区。三、 8086的最小和最大模式系统配置的最小和最大模式系统配置 8086CPU可工作在最小模式和最大模式两种

温馨提示

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

评论

0/150

提交评论