0204 内存的分段表示方法

用分段的方式管理内存

8086CPU用“(段地址×16)+偏移地址=物理地址”的方式给出内存单元的物理地址。

注意:内存本身是连续编址的线性空间,并没有分段,段的划分来自于CPU;8086在使用过程中按自己意愿来分段

同一段内存,多种分段方案

方案1

image-20230902235405213

该段内存起始地址(基础地址)为10000H,是20位地址,我们取其高16位作为段地址及1000H,段大小为100H

方案2

image-20230902235549531

该段内存起始地址(基础地址)为10000H,是20位地址,我们将其又分为2个段。

10000H~1007FH取起始地址高16位作为段地址及1000H,段大小为80H

10080H~100FFH取起始地址高16位作为段地址及1008H,段大小为80H

注意

  • 段地址×16 必然是 16的倍数,所以一个段的起始地址也一定是16的倍数(本质上是因为一个段地址后补4个0必为一个真实的起始物理地址);
  • 偏移地址为16位,16 位地址的寻址能力为 64K,所以一个段的长度最大即为64K。

用不同的段地址和偏移地址可以形成同一个物理地址

image-20230903000541390

段地址很重要,在CPU中使用专门的寄存器来存放段地址,存在4个段(地址)寄存器

  • CS:代码段寄存器
  • DS:数据段寄存器
  • SS:栈段寄存器
  • ES:附加段寄存器

偏移地址可以使用多种方法提供——8086提供丰富的取址方式

站内搜索

没有找到内容!