千家论坛_弱电智能化技术与工程讨论(建筑智能,家居智能,人工智能)

路由交换
收藏本版 (7) |订阅

路由交换 今日: 3703 |主题: 19354|排名: 28 

发新帖
打印 上一主题 下一主题

程序中是否一定要设置栈顶...

[复制链接]
dyt22 发布于: 2006-3-25 12:29 544 次浏览 3 位用户参与讨论
跳转到指定楼层

对AT89C51来讲:程序中是否一定要设置栈顶(SP)

如:MOV SP,#60H

如没有上一条指令,SP默认的地址是什么?

请教大师!

回复

使用道具 举报

已有3人评论

新浪微博达人勋

千家认证

沙发
豆儿 发表于 2006-3-25 15:43:00

SP默认的地址是07H?

这都不学,多看看书吧!

回复 支持 反对

使用道具 举报

新浪微博达人勋

千家认证

板凳
dyt22 发表于 2006-3-25 22:45:00
以下是引用豆儿在2006-3-25 15:43:00的发言:

SP默认的地址是07H?

这都不学,多看看书吧!

复位后堆栈地址为07H,堆栈从08H单元开始存放数据,这就占用了用户单元,最好把堆栈移到地址较高的区域.

特别在不用外部RAM的程序中更应该把堆栈移到地址较高的区域.

这是一个非大师说的,对吗?

回复 支持 反对

使用道具 举报

新浪微博达人勋

千家认证

地板
fclvgyfe 发表于 2006-3-27 11:42:00

只有在程序用到堆栈的时候才需要设置SP.没有使用POP和PUSH指令的程序是不需要设置SP的.设置SP没有特别要求,只要满足下面要求,SP可以设置在你想要的任何内存地址:

1,堆栈容量取决于PUSH和POP指令的执行次数,只要该段不与其它用到的单元有冲突,可以任意设置.无论是07H还是60H.

2,设为60H是避免内存冲突的较好的技术习惯,而不是非做不可的事.如果可以确保堆栈段只在10H长度内,设为70H也可以.

3.复位后SP=07H,只要不用该BANK,也未尝不可.

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆 千家通行证登陆

本版积分规则

千家智客微信号
千家智客微信
玩物说商城
玩物说商城