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

标题: 程序中是否一定要设置栈顶 [打印本页]

作者: dyt22    时间: 2006-3-25 12:30
标题: 程序中是否一定要设置栈顶

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

如:MOV SP,#60H

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

请教大师!


作者: 豆儿    时间: 2006-3-25 15:43

SP默认的地址是07H?

这都不学,多看看书吧!


作者: dyt22    时间: 2006-3-25 22:45
以下是引用豆儿在2006-3-25 15:43:00的发言:

SP默认的地址是07H?

这都不学,多看看书吧!

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

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

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


作者: fclvgyfe    时间: 2006-3-27 11:42

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

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

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

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






欢迎光临 千家论坛_弱电智能化技术与工程讨论(建筑智能,家居智能,人工智能) (http://bbs.qianjia.com/) Powered by Discuz! X3.2