`

中山汇编视频第4集--存储器地址

IBM 
阅读更多

 

 

中山汇编视频第4集

 

存储器里以字节为单位存储信息,每一个字节单元给以一个存储器的地址;

 

一、 8086/8088CPU有20根地址线,可寻址1M(2的20次方)的内存空间;

 

       内存地址以20位地址进行编码,即内存的物理地址为一个20位2进制位的数字,对应的16进制位为5位(4个二进制位顶一个16进制位);00000H~FFFFFH;

 

        8086的CPU的运算字长是16个二进制位,用什么办法来提供20位2进制内存地址呢?

       ----采用存储器(内存也是存储器的一种)地址分段的办法

 

        8086CPU的运算字长为16个二进制位,而20根地址线可表示1M内存空间;将内存地址进行分段,且规定,每段的起始地址必须为16个字节的倍数,即00010H,

 

程序员在编制程序的时候要把存储器划分成段,每个段的大小可达64K,这样段内地址可以用16位表示。
段与段之间可以相连,也可以不相连,还可以部分重叠。

IBM-PC 机对段的起始地址有所限制,段不能起始于任意地址,而必须从任一小段的首地址开始。

机器规定:从0地址开始,每16个字节为一小段(16的倍数)
        00000,00001,00002,...,0000E,0000F;
        00010,00011,00012,...,0001E,0001F;
        00020,00021,00022,...,0002E,0002F;
        ......
第一列就是每个小段的首地址,其特征是:在16进制表示的地址中,最低为0(即20位地址的低4位为0)

在1M字节的地址空间里,共有64K个小段首地址,可表示如下:
                      00000H
                      00010H
                      00020H
                      ...
                      FFFE0H
                      FFFF0H

 

 


在1M字节的存储器里,每一个存储单元都有一个唯一的20位地址,称为:该存储单元的物理地址。

CPU访问存储器时,必须先确定所要访问的存储单元的物理地址才能取得(或存入)该单元中的内容。

要访问的某一个存储单元,总是属于某个段。
把存储单元的地址与所在段的起始地址的差称为段内偏移,简称偏移。

在一个段内,通过偏移可指定要访问的存储单元,或者说要访问的存储单元可由偏移来指定。

在整个1M地址空间中,存储单元的物理地址等于段起始地址加上偏移。

 

存储单元的逻辑地址由:段值和偏移两部分组成,即:段值:偏移;

根据逻辑地址可方便的得到存储单元的物理地址,公式如下:
物理地址=段值*16+偏移

所以20位物理地址由:16位段地址和16位偏移地址组成。


段地址是指每一段的起始地址,由于它必须是小段的首地址,所以其低4位一定是0

       

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics