不管是哪种汇编语言,内存分配语毫无疑问是学习难点,但内存分配有助于工程师更好了解设计电路,对电路硬件有一定的了解,所以我们今天以Keil语言为例,详细谈谈Keil语言的内存分配现象,希望对小伙伴们有所帮助。
在keil中,定义变量时要注意是定义在哪一区域的,系统默认为直接寻址DATA区,但DATA区只有128个字节,很容易用完和溢出。51单片机超出128个字节的RAM区定义变量时一定要在变量前加IDATA,这样表明该变量时IDATA区(128—256之间的RAM区)。
遇到逻辑变量可定义到bdata中,可以大大降低内存占用空间(如bdata bit flag)。
对于不频繁用到和对速度要求不高的放在xdata区中。
如果想节省data空间,必须用large模式,将未定义内存位置的变量全放在data区(当然最好所有变量都应指定内存类型)。
但使用指针时,要指定指针指向类型。在C51中为定义指向内存类型的通用指针占用3各字节,二指向data区的指针只占用1个字节,指向xdata区的指针占2个字节(如:p指向data区 char data *p;)。还可以指定指针本身的存放内存类型,如:char data *xdata p 其含义是指针p指向data区变量,而其本身放在xdata区。