|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 汇编论坛 』
→ 51单片机 如何在汇编语言中切换寄存器组
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
4685
人关注过本帖
标题:
51单片机 如何在汇编语言中切换寄存器组
只看楼主
加入收藏
wsws23
等 级:
论坛游侠
帖 子:105
专家分:107
注 册:2012-3-13
结帖率:
81.82%
楼主
收藏
已结贴
√
问题点数:20 回复次数:8
51单片机 如何在汇编语言中切换寄存器组
即主函数调用了一个有参数的子函数,子函数中有调用了一个有参数的子函数
如何用汇编实现对子函数的调用呢?
随便举个例子:
void delay(int i);
{}
void send(char j);
{
int i;
delay(i);
}
void main()
{
char a;
send(a);
}
大概就是这么个意思,求大神指点
搜索更多相关主题的帖子:
单片机
寄存器
如何
2015-09-19 14:07
举报帖子
使用道具
赠送鲜花
hu9jj
来 自:红土地
等 级:
贵宾
威 望:
400
帖 子:11857
专家分:43421
注 册:2006-5-13
第
2
楼
收藏
得分:5
没看明白内容,单从标题而言,子程序开始要做的事情就是对所有需要使用的寄存器入栈,子程序结束之前将入栈保存的寄存器数据依次出栈,恢复原来的数据。否则程序将不能正常运行。
活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-09-20 09:21
举报帖子
使用道具
赠送鲜花
nooomoon
等 级:
新手上路
帖 子:13
专家分:5
注 册:2015-9-2
第
3
楼
收藏
得分:5
汇编子程序放在特定的地址。要用的时候就用call这个指令就可以。子程序最后要有一个ret指令,这个指令让子程序执行结束后又回跳到call指令之后的那个地址继续。
2015-09-20 13:11
举报帖子
使用道具
赠送鲜花
hu9jj
来 自:红土地
等 级:
贵宾
威 望:
400
帖 子:11857
专家分:43421
注 册:2006-5-13
第
4
楼
收藏
得分:0
call和ret指令仅仅针对IP寄存器数据自动保存和恢复,其他通用寄存器如果子程序要使用,必须在子程序中保存和恢复的。
活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-09-21 08:02
举报帖子
使用道具
赠送鲜花
wmf2014
等 级:
贵宾
威 望:
216
帖 子:2039
专家分:11273
注 册:2014-12-6
第
5
楼
收藏
得分:5
自己用汇编写函数可以比较灵活,参数少时用寄存器,参数多了还是要用栈。不断地用call指令就可以调用你需要的函数了。
能编个毛线衣吗?
2015-09-21 08:45
举报帖子
使用道具
赠送鲜花
wsws23
等 级:
论坛游侠
帖 子:105
专家分:107
注 册:2012-3-13
第
6
楼
收藏
得分:0
回复 2楼 hu9jj
就是将参数放到r0-r7中啊, 51单片机不是有4组嘛,在第一次调用函数的时候用了一组寄存器了,第二组
调用寄存器的时候第一组的数据不能被覆盖,要用第二组切换。就这么个意思
2015-09-25 08:33
举报帖子
使用道具
赠送鲜花
wsws23
等 级:
论坛游侠
帖 子:105
专家分:107
注 册:2012-3-13
第
7
楼
收藏
得分:0
回复 6楼 边小白
对。一组寄存器不够用
2015-09-25 08:34
举报帖子
使用道具
赠送鲜花
wfoo
等 级:
论坛游侠
威 望:
7
帖 子:120
专家分:134
注 册:2011-8-6
第
8
楼
收藏
得分:0
这些寄存器应该是分页的,比如页号为0,1,2,3可以访问第0,1,2,3组寄存器。
应该有一个寄存器的功能就是存放当前页号的,它是全局的,不管上面所说的寄存器的页号为多少,功能都是一样的。
类似于功能选择寄存器,SPR? SFR?你看看你的单片机手册是不是叫这个。
2015-10-13 12:12
举报帖子
使用道具
赠送鲜花
9
1/1页
1
快速回复:
51单片机 如何在汇编语言中切换寄存器组
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.037168 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved