51单片机 堆栈中存放的是一个指令的地址吗?还可以存放其它东西吗?坐等!!!

晕啊!不小心点了100... 晕啊!不小心点了100 展开
 我来答
joyoustech
2013-01-17 · TA获得超过1874个赞
知道小有建树答主
回答量:1465
采纳率:71%
帮助的人:1308万
展开全部
堆栈中可以存放任何东西,只要往外读取的时候别乱了。
建议在51中移植个ucos-ii的操作系统,64任务低版本的,对理解堆栈非常好。
更多追问追答
追问
指令数据都可以吗?
追答
都可以,指令和数据在内部是一样的,都是二进制码。指令放进去不会得到执行,还是需要放在程序存储器中才能得到执行。
GUEL86
2013-01-17 · TA获得超过5855个赞
知道大有可为答主
回答量:5538
采纳率:86%
帮助的人:2724万
展开全部
51单片机 堆栈, 一般是用来 在 调用 子程序, 或者 CPU 产生中断, 时于硬件完成 保存下一条指令地址的,在子程序 或者 中断服务程序 返回时 于硬件 自动将地址 弹出,去接着执行 调用子程序 或者 中断服务程序,前的 下一条指令。
还可以保存 一些临时 数据,如进入中断 服务程序 时需要 保护现场,把一些数据 先压入堆栈,
在 中断返回 前再 弹出到 用来的寄存器,(一般主要是 累加器 和 状态寄存器 等)
当然 在编程 时 临时需要 保存一下数据 也可以,只要堆栈有空间,注意保存后 要 取出,不然会使程序 运行 出错的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
karl_zhang2003
2013-01-16 · TA获得超过373个赞
知道小有建树答主
回答量:190
采纳率:100%
帮助的人:163万
展开全部
堆栈段是在进入中断之前存放当前程序寄存器中值的地方,做现场保护用,在中断程序执行完毕后,将堆栈段里面的东西读取到程序寄存器中,继续执行进入中断之前所进行的程序。
在中断嵌套时,堆栈段会存放多个程序寄存器的值,但是堆栈的存取原则是后进先出,所以最先读出来的值总是最后存进去的那个值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式