[MM32软件] 单片机堆栈

[复制链接]
1501|5
 楼主| szt1993 发表于 2025-3-29 21:27 | 显示全部楼层 |阅读模式

堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且 堆栈有特定的数据传输指令,即PUSH和POP,有一个特殊的专为其服务的单元,即堆栈指针SP。 每当执一次 PUSH指令时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原来值基础上)自动减1。

由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP值,就可以把堆栈设置在规定的内存单元中,如在程序开始时用一条MOV SP,#5FH指令,就时把堆栈设置在从内存单元60H开始的单元中。一般程序的开头总有这么条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元 始往后。08H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成混乱。不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。当设置好堆栈区,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情下编程者不会把它当成普通内存用了。

幸福小强 发表于 2025-3-31 10:16 | 显示全部楼层
堆栈在使用C语言编程 时候体现在哪些地方
hehhehee 发表于 2025-3-31 13:11 | 显示全部楼层
你可以把堆栈想象成一个装东西的箱子,每次你往里面放东西时,放的东西会叠在已经存在的东西上,而当你取东西时,总是拿最后放进去的那一个。
jf101 发表于 2025-3-31 23:04 | 显示全部楼层
单片机堆栈学习一下
申小林一号 发表于 2025-4-24 19:06 | 显示全部楼层
学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

350

主题

3021

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部