欢迎访问文稿网!

逻辑地址和物理地址

范文之家 分享 时间: 加入收藏 我要投稿 点赞

逻辑地址和物理地址

    1.7.3 逻辑地址和物理地址

    由于段的起始地址必须是16的倍数,所以段起始地址有如下形式:

    bbbbbbbbbbbbbbbb0000

    用16进制可表示成XXXX0。这种20位的段起始地址,可压缩表示成16位的XXXX形式。我们把20位段起始地址的高16位XXXX称为段值。显然,段起始地址等于段值乘16(即左移4位)。

    要访问的某一个存储单元总是属于某个段。我们把存储单元的地址与所在段的起始地址的差称为段内偏移,简称为偏移。在—个段内,通过偏移可指定要访问的存储单元,或者说要访问的存储单元可由偏移来指定。在整个1M地址空间中,存储单元的物理地址等于段起始地址加上偏移。

    于是,存储单元的逻辑地址由段值和偏移两部分组成,用如下形式表示:

    段值:偏移

    根据逻辑地址可方便地得到存储单元的物理地址,计算公式如下:

    物理地址=段值×16+偏移地址

    【例1-21】 某个数据存放在DS=8561H和DI=3742H的数据段的存储单元中,此单元的物理地址为:

    85610H+3742H=88D52H。

    【例1-22】 某存储单元的逻辑地址为1234H:3456H,所对应的存储单元的物理地址为:

    12340H+3456H=15796H。

    通过位移和算术加可以很容易地实现物理地址的计算。图1-7是物理地址产生的示意图。由于段可以重叠,所以一个物理地址可用多个逻辑地址表示。图1-8就是这样的一个例子,其中存储单元的物理地址是12345H,标出的两个重叠段的段值分别是1002H和1233H,在对应段内的偏移分别是2325H和0015H。

    img20

    

    图1-7 物理地址产生示意图

    img21

    

    图1-8 一个物理地址可对应多个逻辑地址

    采用段值和偏移构成逻辑地址后,段值由段寄存器给出,偏移可由指令指针IP、堆栈指针SP和其他可作为存储器指针使用的寄存器(SI、DI、BX或BP)给出,偏移还可直接用16位数给出。指令中不使用物理地址,而是使用逻辑地址,由8086/8088CPU中的总线接口单元BIU按需要根据段值和偏移自动形成20位物理地址。

221381
领取福利

微信扫码领取福利

微信扫码分享