MCS-51单片机的存储器编址方式采用与工作寄存器、I/O端口锁存器统一编址的方式。程序存储器和数据存储器空间好似相互独立的,各自有自己的寻址系统和控制信号,物理结构也不同。程序存储器为只读存储器(ROM),数据存储器为随机存储器(RAM)。
1、程序存储器常用来存放程序和表格常数。程序存储器以程序计数器PC作为地址指针,通过16位地址总线,可寻址的地址空间为64K,片内、片外统一编址。在程序存储器中有些特殊的单元在使用时应加以注意。其中一组特殊的单元是0000H~0002H单元,在系统复位之后,PC为0000H,单片机从0000H开始执行程序,该单元是系统执行陈故乡的起始地址,通常在该地址中存放一条跳转指令,而用户程序从跳转地址开始存放程序。另外一组特殊单元为0003H~0021AH,这40个单元被均匀的分为5份,其定义如下:
0003H~000AH:外部中断0的中断地址区
000BH~0012H:定时器/计数器0的中断地址区
0013H~001AH:外部中断1的中断地址区
001BH~0022H:定时器/计数器1的中断地址区
0023H~002AH:串行中断地址区
可见以上40个单元是专门用于存放中断处理程序的地址单元,中断响应后,按中断的类型自动转到各自的终端区去执行程序。从上面看出,每个终端服务程序只有8个字节单元,用8个字节来存放一个中断服务程序显然是不可能的。通常情况下好似在中断响应的地址区存放一条无条件转移指令,指向程序存储器的真正存放终端服务程序的空间去执行。
2、MCS-51单片机的数据存储器无论在物理上或者逻辑上都是分为两个地址空间,一个为内部数据存储器,访问内部数据存储器用MOV指令;另外一个为外部数据存储器,访问外部数据存储器用MOVX指令。8051内部有128个8位数据存储单元和128个专用寄存器单元,这些单元是统一编址的,专用寄存器只能用于存放控制指令数据。所以,用户能使用的RAM只有00H~7FH单元组成的128字节地址空间,可以存放读写的数据或者运算的中间结果;80H~FFH单元组成的高128字节地址空间的特殊功能寄存器(SFR)区,只能访问,而不能用于存放用户数据。片内RAM的低128字节还可以分成工作寄存器区,可位寻址区和一般RAM去3个区域。