打印

寄存器组切换问题???高手请进

[复制链接]
1686|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小星2008|  楼主 | 2009-1-1 18:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近用51单片机做了个程序(用的汇编)把RB0的7个寄存器全给用光了,于是切换到RB1的寄存器使用,操作完后再切换回RB0,发现程序刚开始跑得还行,跑了几圈后就乱了最后竟给跑死了,上网查了下寄存器切换的问题,都说寄存器切换会导致程序跑乱,最好不要用,都没给出解决办法。哪位高人知道解决办法的请指点指点小虾,先谢了!
(先说明我程序中没用中断)

相关帖子

沙发
ayb_ice| | 2009-1-1 19:04 | 只看该作者

汇编又不存在这个问题

一切都是程序员自己的事

使用特权

评论回复
板凳
小星2008|  楼主 | 2009-1-1 19:19 | 只看该作者

寄存器组切换问题

再回去看看程序
请教2楼能否指点指点切换过程需要注意什么

使用特权

评论回复
地板
ayb_ice| | 2009-1-1 19:42 | 只看该作者

汇编一切都要程序员控制

而C不一样,编译器有自己的编译原则,而且是固定的,汇编中起码其它寄存器不能已经被其它变量占用,中断注意保护寄存器...

使用特权

评论回复
5
耕在此行| | 2009-1-1 20:40 | 只看该作者

楼主仔细查下压栈与出栈的问题

估计是压栈与出栈的地方搞错了.
0 1 2 3组的Rn PUSH POP不要搞错地址了.
使用汇编 不容易啊!!!

使用特权

评论回复
6
smileagain| | 2009-1-1 22:28 | 只看该作者

肯定是压栈出栈的问题

画一张堆栈图吧,知道每次pop psw对应的是哪一次push psw,就不会搞错了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

60

帖子

1

粉丝