单片机堆栈是什么?它的原理和作用又是什么?
什么是 单片机堆栈?
在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据,它遵循顺序存取和后进先出(LIFO/FILO)的原则,这个RAM区叫堆栈。
它的作用
子程序调用和中断服务时CPU自动将当前PC值压栈保存,返回时自动将PC值弹栈。保护现场/恢复现场数据传输单片机堆栈原理:
堆栈区由特殊功能寄存器堆栈指针SP管理 堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。
堆栈区由特殊功能寄存器堆栈指针SP管理 堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。
堆栈区由特殊功能寄存器堆栈指针SP管理 堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。
堆栈指针寄存器 SP 详解
堆栈是一种具有“后进先出”(LIFO---Last In First Out)特殊访问属性的存储结构。堆
栈一般使用RAM 物理资源作为存储体,再加上LIFO 访问接口实现。
堆栈的实现方法:
在随机存储器区划出一块区域作为堆栈区,数据可以一个个顺序地存入(压入)到这个区域之中,这个过程称为‘压栈’(push )。通常用一个指针(堆栈指针 SP---Stack Pointer)实现做一次调整,SP 总指向最后一个压入堆栈的数据所在的数据单元(栈顶)。从堆栈中读取数据时,按照堆栈 指针指向的堆栈单元读取堆栈数据,这个过程叫做 ‘弹出’(pop ),每弹出一个数据,SP 即向相反方向做一次调整,如此就实现了后进先出的原则。
堆栈是计算机中广泛应用的技术,基于堆栈具有的数据进出LIFO特性,常应用于保存中断断点、保存子程序调用返回点、保存CPU现场数据等,也用于程序间传递参数。
ARM处理器中通常将寄存器R13作为堆栈指针(SP)。ARM处理器针对不同的模式,共有 6 个堆栈指针(SP),其中用户模式和系统模式共用一个SP,每种异常模式都有各自专用的R13寄存器(SP)。它们通常指向各模式所对应的专用堆栈,也就是ARM处理器允许用户程序有六个不同的堆栈空间。 这些堆栈指针分别为R13、R13_svc、R13_abt、R13_und、R13_irq、R13_fiq,如表2-3 堆栈指针寄存器所示。
为了更准确地描述堆栈,根据“压栈”操作时堆栈指针的增减方向,将堆栈区分为‘递增堆栈’(SP 向大数值方向变化)和‘递减堆栈’(SP 向小数值方向变化);又根据SP 指针指向的存储单元是否含有堆栈数据,又将堆栈区分为‘满堆栈’(SP 指向单元含有堆栈有效数据)和‘空堆栈’(SP 指向单元不含有堆栈有效数据)。
这样两两组合共有四种堆栈方式——满递增、空递增、满递减和空递减。
ARM处理器的堆栈操作具有非常大的灵活性,对这四种类型的堆栈都支持。
ARM处理器中的R13被用作SP。当不使用堆栈时,R13 也可以用做通用数据寄存器。
相关问答
什么是堆栈,51 单片机堆栈指针SP 的使用举例?MCS-51单片机汇编语言中,没有SP这条指令,只有针对SP操作的指令。51单片机中SP是堆栈指针寄存器,存放着当前堆栈地址。堆栈用于存储子程序调用、中断程序调用时...
51 单片机 汇编 堆栈指针sp 的活动范围一般是ram的哪个区域?问题...[最佳回答]举个例子:SP的初始化值是07H,SP从08H开始增加.当程序需要压栈操作时,就将程序的PC值压入堆栈,注意PC是两个字节的指令.先压入低字节,在压入高字节;...
单片机 里 sp 是什么意思啊-ZOL问答SP讨论回答(6)SP指的是堆栈指针详细解释如下:堆栈是一种数据结构,和他相类似的有队列。如果对数据结构有这样的要求:先将数据放到该区内,先放的后出后放的...
在AT89 S 51 单片机 中, 堆栈指针 寄存器始终存放什么的地址?MCS-51单片机汇编语言中,没有SP这条指令,只有针对SP操作的指令。51单片机中SP是堆栈指针寄存器,存放着当前堆栈地址。堆栈用于存储子程序调用、中断程序调用时...
SP 在 单片机 中是什么寄存器有什么作用?你没有说是什么单片机产品,各单片机定义不同。如果是MCS-51单片机,SP指的是堆栈指针寄存器StackPointer,指示堆栈的栈顶地址,定位要入栈或出栈的数据的存放位...
汇编语言中的 堆栈 段 指针 是干什么的?汇编语言中的堆栈段指针是用来保存临时数据、局部变量和中断/调用子程序程序的返回地址。堆栈指针总是指向栈顶元素。在51系列单片机中,堆栈是向上生长的,所以...
微机原理的题目:在堆栈中,若 堆栈指针SP =002,用PUSH存入5个数...[最佳回答]用PUSH存入5个数据后SP=SP-5*2;若用POP取出2个数据SP=SP+2*2.堆栈指针SP=002,这个数,太小了,不够用.用PUSH存入5个数据后SP=S...
c51 单片机sp 口是哪个?是c51单片机的SPI接口,sp是是栈指针。SPI接口,串行外设接口(SerialPeripheralInterface),一种同步外设接口,它可以便单片机与各种外围设备以串行方式进行...
单片机 、简述程序状态字寄存器PSW各位的符合及意义?对进程/线程进行上下文切换关键的比较重要的寄存器:pc:程序计数器,记录下一条指令地址;ir:指令寄存器当前执行中的指令;gr:通用寄存器,比如系统堆栈...对...
如何设置 堆栈 ?堆栈是一种数据结构,用于存储和管理程序运行时的临时数据。在大多数编程语言中,堆栈是通过特殊的寄存器和内存区域来实现的。通常情况下,堆栈的大小和位置是由...