深入解析计算机内存寻址与分段模型
1. 16位寻址与64KB内存
在计算机发展历程中,1974年英特尔推出了8080 CPU,开启了微计算时代。8080是一款8位CPU,每次能处理8位信息,但它有16条地址线。在当时,内存价格极其昂贵,大多数机器最多只有4K或8KB内存。
16条地址线可以寻址64KB的内存空间。以二进制计数,16位二进制数能从0数到65,535,这意味着65,536个独立的内存位置都可以有唯一的地址。8080的内存寻址方案很简单:在地址线上输出一个16位地址,就能得到该地址存储的8位值。需要注意的是,内存系统的地址线数量和每个内存位置存储的数据大小没有必然联系。
当时与8080搭配使用最多的操作系统是CP/M - 80。它通常位于已安装内存的顶部,这样做有时是为了将其存于ROM中,更多时候是为了给临时程序提供一个一致的内存起始点。当CP/M - 80从磁盘读取程序运行时,会将程序加载到低内存,地址为0100H,即距离内存底部256字节处。前256字节称为程序段前缀(PSP),包含各种信息和程序磁盘输入/输出的通用内存缓冲区,而可执行代码从地址0100H开始。
2. 8086的分段内存模型
后来英特尔推出了第一款16位CPU 8086,为了便于将旧的CP/M - 80软件从8080移植到8086,它确保8080的16位寻址系统仍然可用。尽管8086能寻址的内存是8080的16倍(1MB),但英特尔让程序可以在这1MB内存中选取一个64KB的段,并完全在该段内运行,就像在较小的8080内存系统中一样。
这是通过段寄存器实现的。段寄存器本质上是位于CPU寄存器中的内存指针,指向内存中数据存储、代码执行等操
超级会员免费看
订阅专栏 解锁全文
77

被折叠的 条评论
为什么被折叠?



