1、“51系列内部的堆栈是向FF生长的,内部RAM内存分配是从FF向00开始的。” 我是这样理解的:51的堆栈范围只能为30H~7FH,00H~2FH为通用寄存器,80H~FFH为特殊功能寄存器,我们不能使用这两部分空间。剩下的30H~7FH可以用作堆栈或是用户数据存储。比如我们指定栈顶为30H,即MOV SP,#30H ,则堆栈从30H开始向上生长,而用户数据变量是从7FH开始向下分配,这样就要保证堆栈和用户数据不能冲突。
2、“该内存管理,只分配内存不释放内存,相当于在模块初始化时才确定的全局变量。” 这里全局变量的内存分配可以说是由我们来分配的。我想问的是:如果在.C文件开头定义全局变量,对它的内存分配应该是由编译器完成的。对这两种全局变量的内存分配,在地址上会不会有冲突呢?呵呵。
3、“int操作(对两个char操作)中被中断时可能发生操作熟被改变的情况” 以前编程序时,并没有这方面的考虑。这种考虑是只限于51呢,还是别的处理器也有这方面的考虑,那是不是所有的int操作都应进行关闭中断的保护措施。谢谢!
4、您给的文档中少给了Msg_PopMsg()函数,它应该是这样的: //------------------- //弹出消息字 //------------------- unsigned char Msg_PopMsg() { return sInMsg.aReadMsgBuffer[0]; } 对吧? 5、“后面几个阶段的培训内容: 图形设计软件的理论 嵌入系统图形窗口 设计辅助工具的重要性 大程序结构的软件设计模型 ” 什么时候推出?期待ING。
多谢! |