菲利浦80C51MX提供了统一的16MB地址空间。新的指令最大可以存取16MB的内存,其中CODE和XDATA空间被配置到单一的地址空间中。堆栈指针可以被设置为16位,可以在EDATA内存类型中寻址片内RAM。下表所示为对80C51MX架构编程用到的内存类型。当我们使用AX51宏汇编器和LX51连接/定位器时,这些内存类型都可用。
内存类型 | 地址范围 | 说明罗亩的笔记 |
DATA | 7F:0000 - 7F:007F | 可直接寻址的片内RAM |
BIT | 7F:0020 - 7F:002F | 可位寻址的RAM;使用位指令访问 |
IDATA | 7F:0000 - 7F:FFFF | 间接寻址的片内RAM;可以使用@R0或@R1访问 |
EDATA | 7F:0000 - 7F:FFFF | 完全片内RAM;可以用作堆栈空间,也可用@PR0或PR1存取。 |
XDATA | X:0000 - X:FFFF | 64KB RAM(读/写访问)。使用MOVX指令访问。 |
HDATA | X:0000 - X: FFFFFF | 8MB RAM(读/写访问)。使用MOVX指令和扩展的DPTR访问。 |
CODE | C:0000 - C:FFFF | 与传统8051兼容的64KB ROM(只读)。用于存储常量或可执行代码。 |
ECODE | C:0000 - C:FFFFFF | 8MB ROM(只读)。 |
HCONST | 80:0000 - 80:FFFF | 8MB ROM。同ECODE,由CX51编译器用于存储常量。 |
BANK0 ...BANK31 | 80:0000 - 0xBF:FFFF B0:0000 - B63:FFFF | 由CX51编译器把程序存储器空间扩展到超过64KB。罗亩的笔记 |
存储空间的类型前缀D:I:X:C:B0:..B31:不能用于Ax51汇编器级。列出存储类型的前缀只是为了更好地理解。Lx51连接/定位器和一些调试工具,例如μVersion2调试器,使用存储类型前缀来标志地址的存储空间类型。
80C51MX的存储器布局
菲利浦80C51MX的存储器布局如下图所示,提供了一个统一的内存地图,在单一的16MB地址区域内包含了所有的存储器类型。
80C51MX提供了新型的CPU指令,采用一种新的寻址模式,叫做通用指针寻址(Universal Pointer Addressing)。共有两个通用指针寄存器PR0和PR1。PR0由寄存器R1、R2和R3构成。PR1由R5、R6和R7构成。这些新型的通用指针寄存器持有24位地址,与EMOV指令一起使用,可以对整个16MB存储空间寻址。