正确理解物理地址与逻辑地址

Author: 何宗琦 Date: 1997-01-01

#3  黑龙江绥化审计局马野问:在介绍内存的文章中,有的对地址使用五位16进制数表示,如A0000;有的则用两组四位16进制数来表示,如A000:FF68。有什么区别?
  答:用五位16进制数表示的是存储器的物理地址(如果用二进制数表示就为20位),也就是物理存储器的实际地址。但是,在编写程序时不能使用物理地址,只能使用逻辑地址(逻辑地址也称为虚拟地址)。在实方式下,逻辑地址用两组四位16进制数来表示(如果用二进制数表示就为两组16位),前一组四位16进制数称为段地址,后一组四位16进制数称为段内偏移。在实方式中,一个段的长度是64KB。段地址指定了一个段的起始地址(或称为首地址),段内偏移表示被寻址的存储单元与段的起始地址之间的距离。因此,只要在程序中指明了段地址和段内偏移,系统就能计算出实际的物理地址并完成寻址。计算方法是把段地址左移一位16进制数(即4位二进制数),再与段内偏移相加。如:   
  A0 0 0 0(段地址左移一位16进制数,低位加0)
  +   FF68   
  AFF68(得到五位16进制数的物理地址)
  在分析内存原理时,为了直观,也可以用五位16进制数的物理地址来描述存储器结构。