首页 百科知识 存储器结构

存储器结构

时间:2022-10-17 百科知识 版权反馈
【摘要】:要访问一个存储器单元,必须先得到这个存储器单元的物理地址,前节已提到物理地址要由段地址和偏移地址合成。为了能在16位字长的机器中提供20位地址,8086/8088采用了存储器分段管理的方法。分段的方法是将存储器划分成段,每段最大不超过64KB,这样段内地址可用16位表示,称为偏移地址。

2.3.2 存储器结构

在存储器中,信息是以字节(8个二进制位)为最小单位进行存储的,每一个字节单元分配了一个存储器地址,地址从0开始编址,顺序增1,用无符号二进制数表示,但书写时常用无符号十六进制数(数后跟H表示十六进制数)表示。64KB存储器单元编址方法如图2.5所示。

img23

图2.5 存储器编址方法结构

一个字数据存于存储器中相邻两个字节单元,低字节存入低地址单元,高字节存入高地址单元,所以按地址递增方式存储一个字时,应先存低字节后存高字节。要访问一个存储器单元,必须先得到这个存储器单元的物理地址,前节已提到物理地址要由段地址和偏移地址合成。为什么要分段地址和偏移地址呢?这是由于8086/8088用于寻址的寄存器都是16位,16位寄存器只能表示64KB的地址范围,但8086/8088有20条地址线,寻址可达1MB地址范围,即可在00000H~FFFFFH范围内寻址。为了能在16位字长的机器中提供20位地址,8086/8088采用了存储器分段管理的方法。

分段的方法是将存储器划分成段,每段最大不超过64KB,这样段内地址可用16位表示,称为偏移地址。段的起始地址称为段基址(可简称为段地址),必须取为任一小段首地址。小段的划分方法是,从存储器的0地址开始,每16个字节为一小段。下面列出按20位地址对1MB存储器的编址:

img24

分析上面的地址,可以看出小段首地址的特点。小段首地址最后一位都为0,在1MB的寻址范围内用作段地址时最后一位0可以不用保存,并且在1MB的寻址范围内共有64KB个小段首址,从而段地址也可用16位表示。这样用一个16位段地址和一个16位段内偏移地址表示一个存储器单元,就可以使得每一个存储器单元都有一个唯一的20位地址,称为该存储器单元的物理地址。因此根据上述分析,20位物理地址可按下面方法形成:

20位物理地址=16位段地址左移4位(即段地址乘以16)+16位偏移地址

例如,已知一个存储器单元的段地址为3000H,偏移地址为0FFFH,则该存储器单元的物理地址为:3000H×16+0FFFH=30FFFH。每当CPU需要访问一个存储器单元时,就需要产生一个20位物理地址,这时会有一个段寄存器(CS、DS、SS或ES)被自动选中用于提供段地址,而偏移地址则可由指令直接提供或由16位地址寄存器等方式提供。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈