主存储器存储单元的地址和内容详解

来源:百度文库 编辑:神马文学网 时间:2024/04/28 06:08:28
2008年10月18日 星期六 上午 10:24

计算机的存储系统由主存储器(也称为内存储器)和辅助存储器(也称为外存储器)组成,存储器是用来存放程序和数据的装置。

主存储器(简称主存)的基本存储单元是,它能容纳一个二进制的0和1。整个主存由许多存储位构成,这些存储位每8位组合成一个字节,每相邻的2个字节组成一个,相邻的两个字组成一个双字。为了区别这些不同的字节(或字)存储单元,每一单元都被指定一个编号,称为此单元的物理地址(简称PA)。PC机的主存是按8位字节编址的,即以字节作为最小单位。假定主存容量为1M字节,则它的最低地址为00000H,最高地址为0FFFFFH。

主存储器的读取规则:“高高低低”规则,即高地址对应高字节,低地址对应低字节。

【例 1.5.6】图为主存部分单元状态,试从中读取数据

[解:]

如左图所示,字节单元(00000)的内容为 12H ,字单元(00000)的内容为(00001,00000) = 9812H,字单元(00001)的内容为(00002,00001) = 0AC98H。

注意:如果16进制数的第一个数字为字符A~F,需在此16进制数前加一数字0,以便与其它同名的变量名及寄存器名相区别

2、物理地址的形成

8086/8088 CPU的地址线有20根,直接寻址220=1MB。而 8086/8088 CPU的字长为16位,直接寻址216=64KB,无法寻址1MB。为此,8086/8088采用了存储器地址分段的方法。

将整个存储器分成许多逻辑段,每个逻辑段的容量最多为64KB,允许它们在整个存储器空间浮动,各个逻辑段可以紧密相连,也可以重叠。对于任何1个物理地址来说,可以唯一地被包含在1个逻辑段中,也可以被包含在多个相互重叠的逻辑段中,只要能得到它所在段的首地址和段内的相对地址,就可以对它进行访问。在 8086/8088存储空间中,从0地址开始,把每16个连续字节的存储空间称为小节。为了简化操作,逻辑段必须从任一小节的首地址开始。这样划分的特点是:在16进制表示的地址中,最低位为0(即20位地址中的低4位为0)。在1MB的地址空间中,共有64KB小节。

综上所述,分段的原则如下:

(1) 每个段的最大长度为64KB

(2) 段的首地址能被16整除

8086/8088中,每一个存储单元都有一个唯一的20位地址,称此地址为该存储单元的物理地址。CPU访问存储器时,必须先确定所要访问的存储单元地址才能取得该单元的内容。20位的物理地址由16位的段地址和16位的段内偏移地址计算得到。段地址是每一逻辑段的起始地址,必须是每个小节中的首地址,其低4位一定是0,于是在保留段地址时,可以只取段地址的高16位。偏移地址则是在段内相对于段起始地址的偏移值。因此任一存储单元物理地址的计算方法如下:

    物理地址 = 16 D × 段地址 + 段内偏移地址

在微型计算机中,设有4个存放段地址的寄存器,称为段寄存器。它们是代码段寄存器CS,数据段寄存器DS,附加段寄存器ES,堆栈段寄存器SS