发布于 2004-11-23 22:39:18
0楼
关于L存储器,我的看法:
传递给子程序的局部变量是放在程序调用堆栈中的,每次调用子程序时,都会为其分配堆栈空间,所以每个子程序都会有自已的变量空间,互相不会有任何影响.
由于系统在分配堆栈时只是移动栈顶指针,并没有将所分配的空间清零,在新分配的空间里存储着以前使用堆栈时遗留的无用数据,由于遗留下的数据无法追朔其来源,也就是说遗留下的值可能是任何值,所以说L空间在未初始化时包含无效数据.
子程序在返回时,所占用的堆栈空间将会被系统回收,因此在子程序返回后L变量值就丢失了.
至于主程序与子程序之间的参数传递,与编译系统有关,一般在一定条件下(参数的个数及数据类型)会通过CPU的寄存器传递,不符合条件则有可能通过固定内存地址或堆栈传递.不过这与使用无关,不必深究它究竟用什么方法传递.
这是小弟学单片机得出的一点理解,如有错误请高手指正.
希望多交些同行的朋友。我的200/300技术交流群10671799