堆栈区一般都存储哪些内容?80C51单片机的哪一块存储区要分出一些作为堆栈区使用?
发布网友
发布时间:2022-03-28 00:55
我来回答
共2个回答
热心网友
时间:2022-03-28 02:25
整个内存都可以作为堆栈区,你程序设置SP的值就可以了,栈指针,如果自己写汇编堆栈注意不要越界。
热心网友
时间:2022-03-28 03:43
你想存啥都行,
堆栈区一般作为在调用子程序或者中断程序的现场保护!
这个如果你在子程序或者中断程序里没有使用压栈,那么它在调用或者中断的时候只在堆栈里记录 PSW, 当前的地址,如果你在中断中使用压栈(如: PUSH A,
PUSH R0,等),那么它也就存了 相关的数据,但你要记住,在退出的时候记得恢复数据啊,要不然你程序就会出错了。
如:
。。。。
CALL DELAY ;程序在转移到 DELAY 前,先向堆栈保存当前地址,为返回是使用
.......
DELAY: PUSH A ;保护现场
PUSH PSW ;保护现场
......
POP PSW ;恢复现场 《《《---特别注意是“后近先出” !!
POP A ;恢复现场
RET ;从堆栈恢复中断前的地址