单片机的堆栈就相当于一个缓存,先进入到堆栈的数据要最后一个才能出来。
堆栈是进入中断的时候用到的,单片机一旦遇到中断请求,就会去处理中断,处理完后再回来处理主程序,这样就涉及到了一个问题,单片机要保存中断之前的信息,以便处理完后能够回到主程序中,单片机会在响应中断前,把单片机现在的指针地址(也就是处理完要返回的地址),以及一些必要的数据压入堆栈(没有这些数据,单片机处理完中断后就无法确定主程序的状态)。
进入山洞去探险,重要的是要“记住”走过的路。
记在脑子里,或者写在纸上,都可以。(这就是堆栈段。)
这些记忆,进洞时,顺次记住,出洞,顺次想起。
汇编语言堆栈段是什么意思?
在堆栈段里面,就是存储一些“记录”的地方。
专有一个“堆栈指针”,管理“当前记录”的位置,使得它们“后进先出”。
堆栈主要是为了保护断点和保护现场。
堆栈将ACC、PSW中的内容和中断是的地址暂时存放在你初始化规定的堆栈地址中,堆栈地址是数据存储器的地址,堆栈指针为SP,堆栈有向上生长型和向下生长型两种,向上生长型是指在初始化指针SP的情况下,SP往上加,如果是向下生长型则刚好相反。
如果是中断堆栈,则单片机将自动把断点压入堆栈,保护起来,为正确返回作准备。如果是想把ACC、PSW的值暂时存放起来,则用PUSH ACC,PUSH PSW指令压入堆栈,返回时则是POP PSW.POP ACC指令弹出堆栈,堆栈遵循“先入后出”的原则,
在内存开出的,先进后出的一段存储区域。因为数据的存放象码货一样,所以叫堆栈。
堆栈:
就是把数据压进一个你规定的地方缓存,
等你把你要执行的内容执行了,
再从你缓存的地方取出来就可以了