在单片机中什么是堆栈?它的作用是什么? 堆栈的作用是什么?

作者&投稿:门世 (若有异议请与网页底部的电邮联系)

在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。在计算机领域,堆栈是一个不容忽视的概念,堆栈是一种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。

堆栈是一个特定的存储区或寄存器,它的一端是固定的,另一端是浮动的。对这个存储区存入的数据,是一种特殊的数据结构。所有的数据存入或取出,只能在浮动的一端(称栈顶)进行,严格按照“先进后出”的原则存取,位于其中间的元素,必须在其栈上部(后进栈者)诸元素逐个移出后才能取出。在内存储器(随机存储器)中开辟一个区域作为堆栈,叫软件堆栈;用寄存器构成的堆栈,叫硬件堆栈。


扩展资料:

栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据在多个线程或者多个栈之间是不可以共享的,但是在栈内部多个值相等的变量是可以指向一个地址的,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。

参考资料来源:百度百科-栈

参考资料来源:百度百科-堆栈



堆栈是进入中断的时候用到的,单片机一旦遇到中断请求,就会去处理中断,处理完后再回来处理主程序,这样就涉及到了一个问题,单片机要保存中断之前的信息,以便处理完后能够回到主程序中,单片机会在响应中断前,把单片机现在的指针地址(也就是处理完要返回的地址),以及一些必要的数据压入堆栈(没有这些数据,单片机处理完中断后就无法确定主程序的状态)。

在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据,它遵循顺序存取和后进先出(LIFO/FILO)的原则,这个RAM区叫堆栈。

  1. 子程序调用和中断服务时CPU自动将当前PC值压栈保存,返回时自动将PC值弹栈。

  2. 保护现场/恢复现场

  3. 数据传输



保存返回的地址,状态,需保存的数据

华科的学生吧

单片机里面堆栈的功能是什么~

堆栈是存储器中的特殊群体。在内RAM中专门辟出一个连续存储区,用来暂时存放子程序断口地址、中断断口地址和其他需要保存的数据。
堆栈操作无论是存入或取出数据,均只能依次存人或依次取出,不能越位,必须遵循“先进后出"、“后进先出”的原则。
堆栈指针SP指出栈顶存储单元的地址。

在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构。
堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。
在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。要点:堆,队列优先,先进先出。

C语言的堆栈和单片机里的堆栈的联系和区别
答:2018-01-24 单片机中程序指针、数据指针、堆栈指针区别是什么? 5 2009-12-20 在PLC,单片机,微机原理中堆栈的区别 10 2011-03-25 在单片机中什么是堆栈?它的作用是什么? 173 2013-01-26 堆栈和PSW的寄存器组之间有什么关系 本人初学单片机 求教 ... 2 2016-01-05 单片机编程里面,堆栈怎么理解 11 ...

单片机中那部分是堆栈结构?
答:答:堆栈是在单片机片内的数据存储器里开辟的一段存储空间,要明白哪部分是堆栈结构,就要搞清楚单片机的数据存储器。51单片机片内有256字节的数据存储器空间。00H-20H是工作寄存器空间,20H-30H是位寻址区,30H-80H是数据存储区,这段空间可以设置堆栈,80H-FFH是特殊功能存储器空间。所以属于堆栈的空间...

mcs51单片机中堆栈的作用有
答:保存程序计数器的值、实现子程序的调用和返回。1、保存程序计数器的值:当程序发生中断时,PC的值会被保存到堆栈中,以便在中断处理完成后,程序能够从正确的位置继续执行。2、实现子程序的调用和返回:当执行子程序调用指令时,PC的值会被推入堆栈,同时子程序的入口地址也会被推入堆栈。在子程序执行...

单片机RAM中,sp的作用是什么
答:用作开辟一个数据单元作为一个堆栈区,该SS中的内容是该段的首地址。而SP则作为指针用,它有汇编语言中的作用是为模块化等类似问题服务的!如果一个程序调用一个子程序,则进入该子程序前要先对主程序进行一个“现场保护”,以便子程序执行完毕后能顺利地返回地主程序中依次执行。所以在一般的子程序...

单片机堆栈溢出怎么办,什么是堆栈
答:堆栈一般是在你调用子程序时,系统自动将当前调用点现场保留数据压入栈,并且在子程序中开设的局部变量也会占用栈空间。解决方法有几个:-修改编译配置,增大栈空间 -避免不必要的嵌套、频繁调用子程序,比如避免使用递归调用、多重嵌套 -避免在子程序中开设局部大容量变量,如果需要,可以考虑开设成全局...

MCS-5l单片机中堆栈的作用为()。
答:【答案】:在中断处理和子程序调用时,自动保护断点和保护现场。也用指令进行数据的保存和调出

关于51单片机堆栈的问题
答:首先,SP是堆栈指针,当压堆栈的时候,它增加一,当出栈的时候,它减一。PUSH ACC和POP ACC分别是压和出的指令。除此之外,中断和call指令,硬件自动将PC程序指针压栈,等到reti或ret指令的时候,出栈。一般讲SP设置大一点,比如70H,以免和其他单元冲突。

什么是堆栈?堆栈区在RAM中的地址空间范围是多少?
答:FFH。任何位置都可以作为堆栈区使用。系统复位后SP为07H,这时的堆栈空间是08单元及其相连的高地址,但是这里却是寄存器区1所在的地址空间。所以,一般在复位后,应立即对SP赋值,重新指定栈底,使堆栈区设定在RAM中的另一区域。使用高128字节单元当做堆栈区,也是可以的,但是必须是使用52系列的单片机。

单片机-堆栈有何作用?复位时SP=07H吗?为什么要设SP...
答:我来详细讲一下吧。复位的时候SP等于07,堆栈的用处是存储数据,举个例子:如果你现在不修改SP,那SP就等于07H。假如你的A是等于6的,你执行PUSH ACC,之后,你的SP就变成08H了,如果你再执行一句 MOV 08H,#3,你的08H单元之前本来是6,现在变成3了,你再执行POP ACC,此时A等于3了。无法恢复了...

堆栈的概念是什么 单片机高手来~~
答:.(SP)=0063H 因为SP是堆栈指针寄存器,它始终指向栈顶元素。这里要注意的一点是,堆栈定义以后,所谓的栈顶位于该段的低地址端。如果定义的堆栈的大小是64H个字节,那么段内偏移量的范围就在0000H到0063H之间,所以当堆栈为空时,(SP)=0063H。2.因为你定义的堆栈是字类型的,故大小为32H×2=64H...