存储器

存储器的组织

80486在实地址方式下能访问 1M 字节的存储空间,需要 20位地址,有如下特点:

  1. 每个存储单元有一个地址,用20位二进制数(5位16进制数)表示,从 00000H~FFFFFH。
  2. 每个存储单元存放一个字节(byte=8bit)的数据。
  3. 相邻的两个存储单元可构成一个字(word),在对准字时,用偶地址表示。
    1. 一个字对应一个低位的偶地址和一个高位的奇地址。比如 00002H 和 00003H 构成一个字;
    2. 低位偶地址的内容放在低8位,高位奇地址的内容放在高8位。比如 (00002H)=34H,(00003H)=12H,那么(00002)=1234H

再次提醒一下:1byte=1bit,1Mb=1024byte=2^10byte,1Tb=1024Mb=2^10Mb

存储器的分段结构

程序与数据,程序与程序之间有逻辑独立性,所以计算机将存储器分为相对独立的许多内存段,每个段存放不同的程序和数据。

每个段的容量最多为 64kB,因为我们的寄存器都是 16 位的(2^16=64KB);每个段都是独立寻址的逻辑空间,但不同段之间可以邻接、间隔、完全重叠或部分充电。所以一个物理存储单元可以属于一个或多个段。

8086每个程序只能访问四个段,分别是

  1. 代码段——CS寄存器
  2. 数据段——DS寄存器
  3. 堆栈段——SS寄存器
  4. 附加段——ES寄存器

逻辑地址/物理地址

逻辑地址=段基址«4+偏移地址

段基址 16位偏移 主要用途
CS IP 指令寻址
SS SP或BP 堆栈寻址
DS BX、DI、SI 数据寻址
ES 串指令的DI 串目标寻址

堆栈

8086上的堆栈操作是对字(word=2byte)进行操作的。