IA-32处理器平台允许3种不同的访问系统内存的方法:
(1)平坦内存模式
(2)分段内存模式
(3)实地址模式
平坦内存模式把全部系统内存表示为连续的地址空间。所有指令、数据和堆栈都包含在相同的地址空间中。通过称为线性地址(linear address)的特定地址访问每个内存位置。
分段内存模式把系统内存划分为独立段的组,通过位于段寄存器中的指针进行引用。每个段用于包含特定类型的数据。一个段用于包含指令码,另一个段用于包含数据元素,第三个段用于包含程序堆栈。
段中的内存位置是通过逻辑地址定义的。逻辑地址由段地址(存放在段寄存器中)和偏移地址构成。处理器把逻辑地址转换为相应的线性地址位置以便访问内存的字节。
如果程序使用实地址模式,那么所有段寄存器都指向零线性地址,并且不会被程序改动。所有指令码、数据元素、堆栈元素都是通过它们的线性地址直接访问的。
摘自:《汇编语言程序设计》Richard Blum著