找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6760|回复: 8
打印 上一主题 下一主题
收起左侧

51单片机的 POP PUSH指令研究

[复制链接]
跳转到指定楼层
楼主
最近在研究RTOS,在程序中看到一个 POP 7 POP 6 POP ... ,请问大家这个7是什么,POP执行之后 什么会被动了什么?



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:195446 发表于 2020-1-10 00:22 | 只看该作者
7、6、5.。。。。0应该是指工作寄存器,估计是指0组的R7、R6。。。。。R0,但POP后面直接用7表示R7的话,那必须头文件里对R7的地址做好定义才行,其它特殊功能寄存器也是一样。
回复

使用道具 举报

板凳
ID:462827 发表于 2020-1-10 01:12 | 只看该作者
单步调试一下不就看得清清楚楚的么
回复

使用道具 举报

地板
ID:158375 发表于 2020-1-10 08:53 | 只看该作者
POP PUSH指令研究: 就研究出来这样的结果?
回复

使用道具 举报

5#
ID:81053 发表于 2020-1-10 15:40 | 只看该作者
mffhxa 发表于 2020-1-10 00:22
7、6、5.。。。。0应该是指工作寄存器,估计是指0组的R7、R6。。。。。R0,但POP后面直接用7表示R7的话,那 ...

好的,多谢指教
回复

使用道具 举报

6#
ID:81053 发表于 2020-1-10 15:41 | 只看该作者
hantu 发表于 2020-1-10 01:12
单步调试一下不就看得清清楚楚的么

对汇编不太熟悉,仔细调试一下
回复

使用道具 举报

7#
ID:81053 发表于 2020-1-10 15:41 | 只看该作者
笨笨兔 发表于 2020-1-10 08:53
POP PUSH指令研究: 就研究出来这样的结果?

抱歉,还没有啥结果
回复

使用道具 举报

8#
ID:401564 发表于 2020-1-11 15:20 | 只看该作者
以常用的汇编中断处理来说吧:
PUSH          ACC                      ;把ACC压入栈
PUSH          PSW                     ;把PSW压入栈

---------中间是某段代码-----
POP           PSW                     ;把栈的值弹回PSW
POP           ACC                      ;把栈的值弹回ACC
这就是汇编中的堆栈,它是一个处理事件的方
你不用管它是进入中断还是要干嘛,你只要知道它是这么一个过程就可以了:
1,把ACC压入栈,这个时候ACC在栈的最上面的地址,假设这个地址是:0   (PUSH          ACC)
2,把PSW压入栈,这个时候,PSW就在刚才ACC呆的地址,ACC就被压到了下一个地址,那么:PSW在0地址,ACC在1地址,(PUSH          PSW)
如果还有PUSH指令,之前入栈的值就会不断的向下压,压过头了,就没了,这就是常说的"溢出"
在8051系统里,堆栈是软件堆栈,它是由系统自动处理的,理论上来说程序空间有多大,它就能入栈多少次,但实际就100多地址可以放,足够绝大多数的程序了
而有的单片机系统是硬件堆栈,它有的只有三四层的堆栈,也就是说它只能PUSH三四次而已,像这种可以算是堆栈资源非常有限,编程就会有要求:禁止使用递归,中断里最好不有函数,处理什么东西最好是在中断外处理
3,POP           PSW     ;这个指令是:把堆栈的最顶层的数据弹回PSW,理解这个很重要,它是把地址0的数据传送到PSW,这是出栈的顺序
4,POP           ACC     ;把地址1的数据弹回ACC,这两条指令的顺序是不能变的
总的来说,就是网上说的那样:先进后出,自己慢慢理解一下,字打多了,我自己不知道自己在说什么了

回复

使用道具 举报

9#
ID:835796 发表于 2021-5-20 09:42 | 只看该作者
Y_G_G 发表于 2020-1-11 15:20
以常用的汇编中断处理来说吧:
PUSH          ACC                      ;把ACC压入栈
PUSH          PSW                ...

说的很清楚,哈哈,领教了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表