堆栈区一般都存储哪些内容?80C51单片机的哪一块存储区要分出一些作为堆栈区使用?

来源:百度知道 编辑:UC知道 时间:2024/09/22 11:29:56
RT

整个内存都可以作为堆栈区,你程序设置SP的值就可以了,栈指针,如果自己写汇编堆栈注意不要越界。

你想存啥都行,
堆栈区一般作为在调用子程序或者中断程序的现场保护!
这个如果你在子程序或者中断程序里没有使用压栈,那么它在调用或者中断的时候只在堆栈里记录 PSW, 当前的地址,如果你在中断中使用压栈(如: PUSH A,
PUSH R0,等),那么它也就存了 相关的数据,但你要记住,在退出的时候记得恢复数据啊,要不然你程序就会出错了。

如:
。。。。
CALL DELAY ;程序在转移到 DELAY 前,先向堆栈保存当前地址,为返回是使用
.......

DELAY: PUSH A ;保护现场
PUSH PSW ;保护现场
......
POP PSW ;恢复现场 《《《---特别注意是“后近先出” !!
POP A ;恢复现场
RET ;从堆栈恢复中断前的地址