物理地址和逻辑地址

来源:互联网 发布:软件编程师 编辑:程序博客网 时间:2024/04/29 05:32

物理地址和逻辑地址概述 

当操作数是存放在存储器中时,存储器的存储单元的物理地址有两部分组成。一部分是偏移地址,一部分是段地址。

在8086/8088的各种寻址方式中,寻找存储单元所需的偏移地址可由各种成分组成,称为有效地址,用EA表示。可以通过存储器寻址方式获得有效地址。 

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

综上所述,分段的原则如下:  (1)每个段的最大长度为64KB; (2)段的首地址能被16整除。  

8086/8088中,每一个存储单元都有一个唯一的20位地址,称此地址为该存储单元的物理地址。

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

因此任一存储单元物理地址的计算方法如下:  物理地址=16(10H)×段地址+段内偏移地址  

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


原创粉丝点击