



接下来我们看一下表 1-1 中出现的 基址寄存器 和 变址寄存器 。通过这两个寄存器,我们可以对主内存上特定的内存区域进行划分,从而实现类似于数组 [1] 的操作。
首先,我们用十六进制数
将计算机内存上 00000000~FFFFFFFF 的地址划分出来。那么,凡是该范围的内存区域,只要有一个 32 位的寄存器,即可查看全部的内存地址。但如果想要像数组那样分割特定的内存区域以达到连续查看的目的,使用两个寄存器会更方便些。例如,查看 10000000 地址~1000FFFF 地址时,如图 1-9 所示,可以将 10000000 存入基址寄存器,并使变址寄存器的值在 00000000~0000FFFF 变化。CPU 则会把基址寄存器+变址寄存器的值解释为实际查看的内存地址。变址寄存器的值就相当于高级编程语言程序中数组的索引功能。
图1-9 综合使用地址和索引来决定实际地址
注释
[1]
数组是指同样长度的数据在内存中进行连续排列的数据构造。用一个数组名来表示全体数据,通过索引来区分数组的各个数据(元素)。例如,一个 10 个元素的数组 a,其中的各个数据就用 a[0]~a[9] 来表示。[] 内的数字 0~9 就是索引。