频道栏目
读书频道 > 系统 > 其他综合 > 深入理解8051单片机系统
2.7.11 栈和寄存器组1的冲突
2015-12-03 14:40:24     我来说两句
收藏   我要投稿

本文所属图书 > 深入理解8051单片机系统

本书详细介绍了8051单片机的各种功能。主要内容包括8051微控制器、8051汇编语言编程、跳转指令、循环指令、调用指令、I O端口编程、8051寻址方式、算术逻辑指令与程序、8051 C语音编程、8051硬件接线、8051定时  立即去当当网订购

由前面的内容可知,栈指针指向当前可用于栈的RAM位置。当数据压入栈后,SP自增;相反,当数据从栈中弹出到寄存器中时,SP自减。当数据压入栈后,SP自增的原因是为了确保栈是朝着RAM位置7FH处增长,即从低地址向高地址增长。如果数据压入栈后栈指针自减,则使用的就是RAM位置7、6、5等,这些是组0(即默认的寄存器组)的R7到R0。压入数据后指针自增,也确保栈不会到达RAM底部0的位置,结果就是将栈空间使用完。然而,对于栈的默认设置有一个问题,因为当8051上电之后,SP=07,即栈的首个位置是RAM中的08位置,但它是属于寄存器组1的寄存器R0的,也就是说,寄存器组1和栈使用的是同样的存储空间。如果一个程序需要使用寄存器组1和组2时,就必须重新分配RAM空间给栈。例如,可分配RAM位置地址60H甚至更高的位置地址给栈,如例2-10所示。

例2-10给出下面指令的栈和栈指针。


 



您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:2.7.10 CALL指令和栈
下一篇:2.7.12 使用仿真器查看寄存器以及存储器内容
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站