关于51单片机堆栈的问题

来源:百度知道 编辑:UC知道 时间:2024/05/07 17:20:55
我是用汇编写51的,51单片机堆栈,该什么时候用,怎么用,帮忙具体说清楚点.

首先,SP是堆栈指针,当压堆栈的时候,它增加一,当出栈的时候,它减一。
PUSH ACC和POP ACC分别是压和出的指令。

除此之外,中断和call指令,硬件自动将PC程序指针压栈,等到reti或ret指令的时候,出栈。

一般讲SP设置大一点,比如70H,以免和其他单元冲突。

堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。先进栈后出栈,第一个进栈的数据所在的存储单元称为栈底,然后逐次进栈,最后进栈的数据所在的存储单元称为栈顶。随着存放数据的增减,栈顶是变化的,从栈中取数,总是先取栈顶的数据,即最后进栈的数据先取出。
堆栈的操作有两种方式。一种是指令方式,即使用堆栈操作指令进行“进/出”栈操作,用户可根据其需要使用堆栈操作指令对现场进行保护和恢复。一种是自动方式,即在调用子程序或产生中断时,返回地址(断点)自动进栈。程序返回时,断点地址再自动弹回PC,这种堆栈操作不需要用户干预,是通过硬件自动实现的。