stm8的c语言编程-ram中变量分配

stm8的c语言编程-ram中变量分配

ID:8977800

大小:85.00 KB

页数:2页

时间:2018-04-13

stm8的c语言编程-ram中变量分配_第1页
stm8的c语言编程-ram中变量分配_第2页
资源描述:

《stm8的c语言编程-ram中变量分配》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、STM8的C语言编程(2)--RAM中变量分配 采用C这样的高级语言,其实可以不用关心变量在存储器空间中是如何具体分配的。但如果了解如何分配,对编程还是有好处的,尤其是在调试时。例如下面的程序定义了全局变量数组buffer和一个局部变量i,在RAM中如何分配的呢?/*MAIN.Cfile * *Copyright(c)2002-2005STMicroelectronics */ unsignedcharbuffer[10];     //定义全局变量 main(){   unsignedchari;          //定义局部变量         for(i

2、=0;i<10;i++)   {       buffer[i]=0x55;   }       }我们可以通过DEBUG中的反汇编窗口,看到如下的对应代码: 从这段代码中可以看到,全局变量buffer被分配到空间从地址0000H到0009H。而局部变量i则在堆栈空间中分配,通过PUSHA指令,将堆栈指针减1,腾出一个字节的空间,而SP+1指向的空间就是分配给局部变量使用的空间。由此可以得出初步的结论,对于全局变量,内存分配是从低地址0000H开始向上分配的。而局部变量则是在堆栈空间中分配。另外从上一篇文章中,可以知道堆栈指针初始化时为0FFFH。而根据PUSH

3、指令的定义,当压栈后堆栈指针减1。因此堆栈是从上往下使用的。因此根据内存分配和堆栈使用规则,我们在程序设计时,不能定义过多的变量,免得没有空间给堆栈使用。换句话说,当定义变量时,一定要考虑到堆栈空间,尤其是那些复杂的系统,程序调用层数多,这样就会占用大量的堆栈空间。总之,在单片机的程序设计时,由于RAM空间非常有限,要充分考虑到全局变量、局部变量、程序调用层数和中断服务调用对空间的占用。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。