版块
论坛
喜欢
话题
应用
搜索
登录
注册
wangshihu的个人空间
访问量
5
新鲜事
帖子
资料
http://bbs3.driverdevelop.com/index.php?m=space&uid=72979
c51里堆栈指针SP如何处理?
在汇编里需要重新指定栈顶指针,但如果在c51初始化寄存器的子函数里指定栈顶指针,则程序将一直在子函数里循环,跳不出来,为什么?郁闷
回复
(
10
)
2004-12-06 17:29
来自版块 -
Keil C 使用
◆
◆
表情
告诉我的粉丝
提 交
computer00
:
嘿嘿,我还在51上写了个操作系统呢,直接操作SP。 去我的BLOG里找来玩玩吧。
(2007-09-10 21:53)
回复
walnutcy
:
看完了才发现是好老的贴子,我就不说怎么设SP了, 自己写一个51的启动的代码就可以了,我在keilc51下完整地用c+嵌入式汇编完成过工程,采用嵌入式汇编处理sp,进行任务切换, 专用来处理堆栈,嘻嘻,,,一个简易的任务调度,,
(2007-08-19 15:47)
回复
computer00
:
知道函数调用过程吗?函数调用过程时,将返回地址压入堆栈,现在你跑到函数里面把堆栈指针给改了,那它怎么正确返回啊?返回地址都不对了,你这个比过河拆桥更严重~~~~~~~~
(2007-03-28 21:50)
回复
liuzheng2k
:
去看看STARTUP.A51文件
(2005-01-11 15:04)
回复
sx_wjy
:
不用设置,编译器会自动设置得,你看一下编译后的汇编代码就知道了?经常看看编译后的汇编代码。
(2005-01-09 16:52)
回复
lsn_061
:
是的,一般不需要,除非发生溢出,才适当清零,程序大了才这样// [编辑 - 12/23/04 by lsn_061]
(2004-12-23 15:58)
回复
guyx
:
不用设置,会自动设置得
(2004-12-23 10:27)
回复
lbcat
:
可以是可以指定,不过你如果要在子程序里改变的话,那么新指向的堆栈结构必须与原来子程序入栈的时候相同(而且要可以预料得到程序得流向),否则程序就跑飞了…………
(2004-12-14 09:35)
回复
sunnysky
:
并且你犯了一个致命错误! SP指针不能在子函数里设置!原因是。。。。呵呵!
(2004-12-08 15:09)
回复
sunnysky
:
一般来讲,KEIL C51不需要用户设置SP!它自己会根据内部ROM使用情况来初始SP!
(2004-12-08 14:58)
回复
wangshihu
加关注
写私信
0
关注
0
粉丝
411
帖子
返回顶部