看看下图的拼接关系:
注意,对以下16-----31这16个寄存器,STC规约了不允许8位访问只能16位访问。R0---R15既可以8位也可以16位访问,R16---R31只能双字16位访问。
就是说,下图中的寄存器,只能以16位来访问:
当然R0—R3可以拼出DR0,R0 是最高字节,R3是最低字节。
16位寄存器的编号是偶数,能被2整除,0,2,4,6,8…….
32位寄存器的编号是偶数的2倍,编号能能被4整除。
而R58---R63是4位1拼变成DR56当DPX扩展的数据指针,而R60---R63是4位1拼变成SPX当扩展的堆栈指针。
本来四组0—组3的寄存器和存储器是无关的,可是8051是紧凑结构,它把寄存器的变化体现在存储器里:“在存储器地址空间可以访问组0~组3,对应的存储器地址是00H—07H,08H---0FH,10H----17H。18H----1FH。”
紧凑结构都是这样:
看看映射关系:
要看懂上图的数据映射关系,上面的关系一定要保留。在EDATA的区域里,是固定分配给传统51以便保持兼容性一致。
下图是传统8051的通过状态值PSW的RS1RS0选择寄存器的对应存储器映射地址范围表
与STC15/STC8系列增强型8051单片机一样,寄存器RO-R7仍然划分为四个组,每组依然包含8个寄存器
字寄存器(16位)是两个字节寄存器的组合,双字寄存器(32位)是4个字节寄存器的组合
这样纯理论,难理解,演示一下: