什么是堆栈?堆栈指针的SP的作用是什么?8051单片机堆栈容量不超过多少字节?

请教高手,告诉我... 请教高手,告诉我 展开
 我来答
匿名用户
2013-04-03
展开全部
在调用子程序时需要保存调用函数的CPU寄存器PC指针,PC指针是被CALL指令自动压入SP所指向的片内存储器,CPU寄存器要由用户用PUSH指令自行保存,
因此SP的作用就是一个指针,当进行中断调用,子函数调用时将现场数据压入SP所指向的存储器,SP自动增加1或2,当中断结束RETI,调用返回RET,POP时将SP数据弹出,SP自动减1或2
8051最大为128字节的片内存储器,0X20以上理论都可以做堆栈用96字节,8052为256字节224字节可用
但这样便没有其它空间可用于数据存储
现在的单片机的程序一般都能用C51来,不用关心堆栈大小与SP寄存器
潘达lya
2013-04-02 · TA获得超过1475个赞
知道小有建树答主
回答量:509
采纳率:0%
帮助的人:440万
展开全部
128个字节,就是用来暂存数据的,比如 你执行了一段实现 c=a+b的指令,你只要push c(地址) 就会把c推入栈中, 中间你只要没有其他的push 操作,再使用 pop d(地址) ,d中的数据就是原来c的数据。。。
这东西不要乱用,平常可以完全不用的,只要用call ret指令用就行了。。。push用法必须符合先入后出的原则,用不好很麻烦,如果是数据你完全可以,把它先移动到一个工作寄存器里,也不容易把事情搞乱。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
153994730
2013-04-07
知道答主
回答量:23
采纳率:0%
帮助的人:10.2万
展开全部
栈和堆是2种不同的数据结构。
栈,你可以想象成一个杯子,后进先出原则。
栈的内存空间是连续的。
和栈有关的寄存器:ESP,EBP。 EBP指向当前程序所在的栈的栈底,而ESP则指向该栈的栈顶。
函数调用和栈是密切相关的
典型的函数调用过程(STDCALL 约定)
比如 C代码中有这么一句:ret = function1(p1,p2,p3)
那么实际上编译器会将这句话翻译成如下:
push p3 //将函数形参依次从右到左压入栈中
push p2
push p1
push EIP //压入当前指令地址,也就是函数调用完后接着要执行的位置
push EBP //为function1函数开辟栈空间
move EBP,ESP
sub ESP, 44h
//之后程序将跳转到function1原型所在的位置,开始从第一句逐句执行。
函数内的参数是保存在栈中的

而堆,堆不只是单纯的数据结构,它是一种OS管理内存,分配内存的策略。
大致上,WIN平台下,若使用HEAP CREATE函数,则会为程序准备一个堆区,这个堆区是一片连续的内存空间。
堆一开始是一个大块BLOCK。 在经过使用和释放后,会产生空表和快表。空表和快表都是以链表形式存在的。
空表为双链表,而快表是单链表形式。当然WIN对堆的管理不只这两种数据结构形式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-02
展开全部
堆栈把程序的地址或需要保护的数据暂时存起来,比如调用子程序时,当前程序的地址会被压入堆栈保存,在子程序返回时这个地址会从堆栈读出。单片机堆栈深度要看ram大小,初始位置在07H,然后不能让它堆到7FH之后的特殊功能寄存器,就是这样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
七彩镜
推荐于2017-10-08 · TA获得超过1127个赞
知道小有建树答主
回答量:273
采纳率:0%
帮助的人:207万
展开全部
计算机中的堆栈是计算机存储数据的一种数据结构,通常由一块存储区和指向该存储区的指针SP构成。
在堆栈中保存数据叫入栈,从堆栈中读取数据叫出栈。堆栈保存数据的特点是入栈和出栈是倒序的,最先入栈的数据要到最后才能出栈,而最后入栈的数据最先出栈,这就是通常说的“先进后出,后进先出”。
堆栈保存数据和读取数据都是通过唯一的堆栈指针SP来实现的,SP的作用就是指示当前要出栈或入栈的数据,并在操作执行后自动递增或递减。至于是入栈递增还是入栈递减,由堆栈设计者确定。对于硬件堆栈,就是由CPU的生产厂家确定。但有一点,SP是入栈递增的,出栈就必定是递减,反之亦然。SP入栈递增的堆栈通常叫向上生长型的堆栈,反之就是向下生长型的堆栈。
8051的堆栈容量不超过(256-8)字节,单片机复位后SP的值为07H,SP是入栈递增,即向上生长型的堆栈。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式