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

请教高手,告诉我

1、在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。要点:堆,顺序随意。栈,后进先出(Last-In/First-Out)。

区分队列 先进先出
2、堆栈是一块保存数据的连续内存。 一个名为堆栈指针(SP)的寄存器指向堆栈的顶部。 堆栈的底部在一个固定的地址。 堆栈的大小在运行时由内核动态地调整。 CPU实现指令 PUSH和POP, 向堆栈中添加元素和从中移去元素。 堆栈由逻辑堆栈帧组成。 当调用函数时逻辑堆栈帧被压入栈中, 当函数返回时逻辑 堆栈帧被从栈中弹出。 堆栈帧包括函数的参数, 函数地局部变量, 以及恢复前一个堆栈 帧所需要的数据, 其中包括在函数调用时指令指针(IP)的值。 堆栈既可以向下增长(向内存低地址)也可以向上增长, 这依赖于具体的实现。 在我 们的例子中, 堆栈是向下增长的。 这是很多计算机的实现方式, 包括Intel, Motorola, SPARC和MIPS处理器。 堆栈指针(SP)也是依赖于具体实现的。 它可以指向堆栈的最后地址, 或者指向堆栈之后的下一个空闲可用地址。 在我们的讨论当中, SP指向堆栈的最后地址。 除了堆栈指针(SP指向堆栈顶部的的低地址)之外, 为了使用方便还有指向帧内固定 地址的指针叫做帧指针(FP)。 有些文章把它叫做局部基指针(LB-local base pointer)。 从理论上来说, 局部变量可以用SP加偏移量来引用。 然而, 当有字被压栈和出栈后, 这 些偏移量就变了。 尽管在某些情况下编译器能够跟踪栈中的字操作, 由此可以修正偏移 量, 但是在某些情况下不能。 而且在所有情况下, 要引入可观的管理开销。 而且在有些 机器上, 比如Intel处理器, 由SP加偏移量访问一个变量需要多条指令才能实现。 因此, 许多编译器使用第二个寄存器, FP, 对于局部变量和函数参数都可以引用, 因为它们到FP的距离不会受到PUSH和POP操作的影响。 在Intel CPU中, BP(EBP)用于这 个目的。 在Motorola CPU中, 除了A7(堆栈指针SP)之外的任何地址寄存器都可以做FP。 考虑到我们堆栈的增长方向, 从FP的位置开始计算, 函数参数的偏移量是正值, 而局部 变量的偏移量是负值。 当一个例程被调用时所必须做的第一件事是保存前一个FP(这样当例程退出时就可以 恢复)。 然后它把SP复制到FP, 创建新的FP, 把SP向前移动为局部变量保留空间。 这称为 例程的序幕(prolog)工作。 当例程退出时, 堆栈必须被清除干净, 这称为例程的收尾 (epilog)工作。 Intel的ENTER和LEAVE指令, Motorola的LINK和UNLINK指令, 都可以用于 有效地序幕和收尾工作。
3、普通的8051MCU堆栈指针只有8位,所以堆栈不可能超过256字节13086.
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-03-31

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

    SP的作用是在51单片机中,SP栈指针是一个专用的8位寄存器,系统复位后,SP初始化为07H,使得堆栈指针实际上是由08H单元开始。

    51堆栈的容量最大也不会超过128字节。

本回答被网友采纳
第2个回答  2013-01-28
堆栈,就是一个盒子,先放里面的,是后拿出来,因为压箱底了----。
不超过128个就可以了。
第3个回答  推荐于2017-11-25
在51单片机中,SP栈指针是一个专用的8位寄存器,
系统复位后,SP初始化为07H,使得堆栈指针实际上是由08H单元开始。
在响应中断或子程序调用时,发生入栈操作,入栈的是16位PC值;
51中有PUSH压入和POP弹出栈操作指令,
如有必要,在中断或调用子程序时可用POSU指令把PSW或其它需要保护的寄存器的内容
压入堆栈加以保护;返回前再使用POP指令把它们恢复。
51的内部RAM只有从00H到7FH共计128字节的空间,而且00H~1FH是工作寄存器区,
所以SP的设定一般设定是从20H到70H这个范围。
51堆栈的容量最大也不会超过128字节。本回答被网友采纳

什么是堆栈?堆栈指针的SP的作用是什么?8051单片机堆栈容量不超过多少...
SP的作用是在51单片机中,SP栈指针是一个专用的8位寄存器,系统复位后,SP初始化为07H,使得堆栈指针实际上是由08H单元开始。51堆栈的容量最大也不会超过128字节。

什么叫堆栈?8051堆栈指示器SP有多少位,作用是什么?单片机初始化话后SP...
其作用一般是保存寄存器或标志寄存器的内容。堆栈就是这样一种数据结构。它是在内存中开辟一个存储区域,数据一个一个顺序地存入(也就是“压入——push”)这个区域之中。有一个地址指针总指向最后一个压入堆栈的数据所在的数据单元,存放这个地址指针的寄存器就叫做堆栈指示器。开始放入数据的单元叫做“...

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

单片机RAM中,sp的作用是什么
SP,即堆栈指针,是单片机中用于管理堆栈的一种重要寄存器。堆栈是一种数据结构,它遵循“先进后出”的原则,即最先放入的数据最后被取出。堆栈通常用于算法中的回溯过程。在数据结构中,与堆栈相对的是队列,队列遵循“先进先出”的原则。在汇编语言编程中,为了管理和操作堆栈,引入了SS(段寄存器)和SP...

单片机RAM中,sp的作用是什么
SP,即堆栈指针,在单片机中扮演着重要角色。堆栈是一种数据结构,与之相对的队列则遵循先入先出的原则。堆栈的特点是后进先出,因此其数据操作只有一端,主要用于回溯等算法。在汇编语言中,堆栈的实现依赖于SS段寄存器和SP堆栈指针。SS寄存器用于指定堆栈区的段地址,而SP则指向堆栈区的顶部。在程序...

什么是堆栈?说明堆栈指针SP的作用。
堆栈是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。堆栈指针SP在片内RAM128B中开辟栈区,并随时跟踪栈顶地址。

单片机的堆栈指针SP有什么作用
在51单片机中,SP栈指针是一个专用的8位寄存器,系统复位后,SP初始化为07H,使得堆栈指针实际上是由08H单元开始。在响应中断或子程序调用时,发生入栈操作,入栈的是16位PC值;51中有PUSH压入和POP弹出栈操作指令,如有必要,在中断或调用子程序时可用POSU指令把PSW或其它需要保护的寄存器的内容压入...

什么是堆栈?堆栈区在RAM中的地址空间范围是多少?
堆栈指针SP是存放当前堆栈栈顶所对应的存储单元地址的一个8位寄存器。 SP的值,可以由软件设定,所以,整个片内RAM区域的任何位置都可以作为堆栈区使用。 51系列的单片机的RAM,只有低128字节,范围是00~7FH; 52系列的单片机的RAM,共有256字节,范围是00~FFH。任何位置都可以作为堆栈区使用。系统复位...

堆栈指示器SP的作用是什么?
1、sp是16位的栈寄存器,指向栈顶的位置。2、堆栈指示器又称“堆栈指针”。在堆栈操作中,始终指示栈顶单元位置的地址寄存器。数据存入堆栈或从堆栈取出数据时,堆栈指示器的内容会作为堆栈操作指令执行过程的一部分而自动增量或减量。3、堆栈是内存中的一个特殊区域,该区域的内容不能随意取出,而是遵从...

单片机中数据指针DPTR和堆栈指针SP是什么,有什么用及在编程中什么时候要...
DPTR是个16位的寄存器,主要用来寻址,他存储的是空间地址。因此可寻址存储64k的范围。SP堆栈指针,主要用来调用子程序或者进入中断的时候保存当前的寄存器内的数据,和当前程序计数器值。在程序返回后把内容弹出。回到断开的程序段处继续执行。

相似回答