这个东西有点绕,但想通了会觉得蛮有趣
-
物理地址
-
1、每个内存单元在整个内存空间中具有的惟一的地址。
2、8086/8088CPU有20根地址线,它可以产生20位的地址码,寻址范围为2^20,即1兆字节空间。注意:了方便书写,在源程序中常用5位十六进制数来表示一个存储单元的地址(8086、8088有20位地址码,也就是20位二进制数,20位二进制也就是5位十六进制数喽!)
逻辑地址
-
为什么要划分逻辑地址?
将内存划分成多个逻辑段后,就使用逻辑地址来指示存储单元。
使用逻辑地址方便了程序的开发和对存储器进行动态管理。 -
逻辑地址的组成?
段基地址 偏移地址 16位 16位 16位的段(基)地址————————————————————–决定该逻辑段在内存中的位置
16位的段内地址,也叫相对地址,或偏移地址——————————-决定该存储单元相对段起始单元的距离 -
段起始单元是什么?
逻辑段的起始单元称为段首
段首的偏移地址=0
-
举例说明:
8086/8088的存储器段结构的特点:
-
1、 每个段最大长度为64K(65536)个字节单元组成。(因为偏移地址16位,2^16=65536)
2.、每个段的起始地址(段基址)必须是一个小节的首址。每个小节的首地址最低位必为0(16进制数表示)。
形如:00000H 00010H 00020H …… 000F0H -
3、逻辑段在物理存储器中可以是邻接的、间隔的、部分重叠的和完全重叠的等4种情况。
逻辑段是把物理内存分段了(为了便于管理),两个逻辑段对应的物理地址可以重合
-
4、在任一时刻,一个程序只能访问4个当前段中的内容。
4个段分别是代码段、数据段、堆栈段和附加段,称为当前段 。
一图顶千言
逻辑地址与物理地址的转换
-
物理地址=段基地址×16+偏移地址
设某操作数存放在数据段,DS=250AH,数据所在单元的偏移地址=0204H。则该操作数所在单元的物理地址为:
250AH ×16+0204H = 252A4H