1、存储类型
data:直接访问内部数据存储器(128字节片内RAM),访问速度最快。
bdata:可位寻址内部数据存储器(16字节片内RAM),允许位于字节混合访问。
idata:间接访问内部数据存储器(256字节片内RAM),允许访问全部内部地址。
pdata:分页访问外部数据存储器(256字节片外RAM),用"MOVX @Ri"指令访问。
xdata:外部数据存储器(64KB外部RAM),用"MOVX @DPTR"指令访问。
code:程序存储器(片内4KB或64KB片外FLASH),用"MOVC @A+DPTR"指令访问。
2、存储模式
存储模式决定了默认的存储器类型此存储器类型将应用于函数参数局部变量和定义时未包含存储器类型的变量你可以在命令行用SMALLCOMPACT和LARGE参数定义存储模式定义变量时使用存储器类型显式定义将屏蔽默认存储器类型。
小(SMALL)模式
所有变量都默认在8051的内部数据存储器中这和用data显式定义变量起到相同的作用在此模式下变量访问是非常快速的然而所有数据对象包括堆栈都必须放在内部RAM中堆栈空间面临溢出因为堆栈所占用多少空间依赖于各个子程序的调用嵌套深度在典型应用中如果具有代码分段功能的BL51连接/定位器被配置成覆盖内部数据存储器中的变量时此SMALL模式是最好的选择。
紧凑COMPACT模式
此模式中所有变量都默认在8051的外部数据存储器的一页中地址的高字节往往通过Port 2输出其值必须由你在启动代码中设置编译器不会为你设置这和用pdata显式定义变量起到相同的作用此模式最多只能提供256字节的变量这种限制来自于间接寻址所使用的R0,R1MOVX @R0/R1这种模式不如SMALL模式高效所以变量的访问不够快不过它比LARGE模式要快。
大LARGE模式
在大模式下所有的变量都默认在外部存储器中xdata这和用xdata显式定义变量起到相同的作用数据指针DPTR用来寻址通过DPTR进行存储器的访问的效率很低特别是在对一个大于一个字节的变量进行操作时尤为明显此数据访问类型比SMALL和COMPACT模式需要更多的代码
注。