打印

如果在51中先sp=00h,那就不能用00h后的空间写程序?

[复制链接]
2033|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
战地记者|  楼主 | 2007-1-9 20:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近看书老出些稀奇古怪的问题,我想主要没实践吧!
还有就是:
函数调用的时候要用到堆栈;
中断也要用到,如果一段程序里根本没用到函数调用以及中断,那么对sp的初始化不就是多余的吗?怎么这书上这段程序里有初始化sp,
书上摘来的程序:
org 00h
start:jmp main
org 30h
main:mov sp,#5fh     ;会不会这里是多余的,这样做了以后是不是意味这5fh以后的空间,其他程序都不能调用?
mov p2,#0ffh
next1:mov a,p1
      mov p2,a
      jmp next1
      end
谢谢大家了

相关帖子

沙发
一级菜鸟| | 2007-1-9 20:33 | 只看该作者

5F以后可以用,但是你必须保证堆栈的深度不会到达你使用的

所以一般都不这么用
你看的书可能偏早,除了某些如2051,89S51外,大多数51系列现在都有256的RAM,SP可以设到80H以后,如0E0H,当然,还是要看程序的堆栈使用深度

使用特权

评论回复
板凳
conwh| | 2007-1-9 20:36 | 只看该作者

SP设置在什么地方不代表其后面的不能使用,主要看在整个程

你需要的SP深度是多少,一般结构化的程序可能占用SP的深度较深,如果像你提供的这个程序,就根本不需要SP,所以你不管设到那里都无关紧要的。相关内容还是自己找本书看看,老提这种问题就表明你一点进步都没有。

使用特权

评论回复
地板
战地记者|  楼主 | 2007-1-9 20:59 | 只看该作者

不啊 我觉得我有所涨劲

谢谢 conwh 一级菜鸟
你这样讲我就明白了,我不是没看书是我看了书不明白撒,这样问问就豁然开朗了,


使用特权

评论回复
5
战地记者|  楼主 | 2007-1-9 21:04 | 只看该作者

在书上早就找到了这句

可能悟性低吧.
书上有这么一句:
设置堆栈区时应事先估算出子程序和中断嵌套的级数以及程序中栈操作指令的使用情况,其大小应有余量.

使用特权

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

本版积分规则

97

主题

487

帖子

1

粉丝