让编程改变世界
Change the world by program
内存地址空间(概述)
什么是内存地址空间呢?
一个CPU的地址线宽度为10,那么可以寻址1024个内存单元,这1024个可寻到的内存单元就构成这个CPU的内存地址空间。下面深入讨论。 首先需要介绍两部分基本知识,主板和接口卡。
主板
在每一台PC机中,都有一个主板,主板上有核心器件和一些主要器件。 这些器件通过总线(地址总线、数据总线、控制总线)相连。
接口卡
计算机系统中,所有可用程序控制其工作的设备,必须受到CPU的控制。 CPU对外部设备不能直接控制,如显示器、音箱、打印机等。直接控制这些设备进行工作的是插在扩展插槽上的接口卡。
各类存储器芯片
从读写属性上看分为两类:
随机存储器(RAM)和只读存储器(ROM)
从功能和连接上分类:
随机存储器RAM 接口卡上的RAM 装有BIOS的ROM
BIOS:Basic Input/Output System,基本输入输出系统。
BIOS 是由主板和各类接口卡(如:显卡、网卡等)厂商提供的软件系统,可以通过它利用该硬件设备进行最基本的输入输出。在主板和某些接口卡上插有存储相应 BIOS 的 ROM。 [caption id="attachment_241" align="aligncenter" width="300"] PC机中各类存储器的逻辑连接情况[/caption]
内存地址空间
上述的那些存储器在物理上是独立的器件。
但是它们在以下两点上相同:
1、都和CPU的总线相连。 2、CPU对它们进行读或写的时候都通过控制线发出内存读写命令。
将各各类存储器看作一个逻辑存储器:
[caption id="attachment_240" align="aligncenter" width="300"] 将各各类存储器看作一个逻辑存储器[/caption] 假设,上图中的内存空间地址段分配如下: 地址0~7FFFH的32KB空间为主随机存储器的地址空间; 地址8000H~9FFFH的8KB空间为显存地址空间; 地址A000H~FFFFH的24KB空间为各个ROM的地址空间。 所有的物理存储器被看作一个由若干存储单元组成的逻辑存储器; 每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间; CPU在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据。 不同的计算机系统的内存地址空间分配情况是不同的。
8086PC机的内存地址空间分配
[caption id="attachment_242" align="aligncenter" width="164"] 8086PC机的内存地址空间分配[/caption]
最终运行程序的是CPU,我们用汇编编程的时候,必须要从CPU角度考虑问题。(我们学习这门课程的核心思维)
对CPU来讲,系统中的所有存储器中的存储单元都处于一个统一的逻辑存储器中,它的容量受CPU寻址能力的限制。这个逻辑存储器即是我们所说的内存地址空间。