独闷闷网

 找回密码
 立即注册
搜索
查看: 625|回复: 0
收起左侧

[原创] 如何知道和设置栈的大小?51单片机的栈有多大?已解答。

[复制链接]
发表于 2015-8-14 13:59:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
问:
如何知道和设置栈的大小?51单片机的栈有多大?

★坚鸿-深圳:
栈是内存RAM的一部分,一般由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。51单片机可用的内存是从00H到7FH,从00H到1FH是数据寄存器,20H到2FH是位寻址区,所以栈底一般从30H开始设置,容量最大4FH,因为还要预留一部分留作它全局变量用,所以实际上不到4FH。通过给SP赋值可以设置栈底,从而决定了栈的大小。方法是只要在程序开始阶段更改了SP的值,就可以把堆栈设置在规定的内存单元中,比如在汇编程序开始时,通过一条MOV SP,#5FH指令,就把栈底设置在内存60H的单元中,此时堆栈可用的大小就是60H~7FH。用C语言编程时,由于C编译会帮我们进行一些默认配置,所以我们没有关注到这方面的内容。

乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2018-9-19 09:00 , Processed in 0.096610 second(s), 18 queries .

快速回复 返回顶部 返回列表