单片机堆栈问题? 单片机堆栈工作过程
更新时间:2021-11-11 02:40:46 • 作者:NATASHA •阅读 2910
单片机汇编知识堆栈问题
上电默认为07H,可用MOV SP,#5F ;如5FH,51的地址为00H-7FH 关键看你使用情况。假如你用默认的07H。只能存4个字节,因为0BH就是外部中断地址了。
关于51单片机堆栈的问题
首先,SP是堆栈指针,当压堆栈的时候,它增加一,当出栈的时候,它减一。
PUSH ACC和POP ACC分别是压和出的指令。
除此之外,中断和call指令,硬件自动将PC程序指针压栈,等到reti或ret指令的时候,出栈。
一般讲SP设置大一点,比如70H,以免和其他单元冲突。
单片机简单的堆栈问题
D 才对
如果再仔细推敲这就是典型的文字游戏的狗屁题目了
如果字面理解‘指向’,那当然是指向栈底,因为无论数据是多少,记录规则如何,总是为了确定栈底在什么位置,当全部弹出,此时指向必定是栈底
如果‘指向’的含义是此时SP的数据值,那就是D
C是肯定不对的
堆栈
程序的堆栈可以位于 256 字节数据存储器中的任何位置。堆栈区域用堆栈指针(SP,0x81)SFR 指定。SP 指向最后使用的位置。下一个压入堆栈的数据将被存放在 SP+1,然后 SP加 1。
复位后堆栈指针被初始化为地址 0x07,因此第一个被压入堆栈的数据将被存放在地 0x08,这也是寄存器区 1 的第一个寄存器(R0)。如果使用不止一个寄存器区,SP 应被初始化为数据存储器中不用于数据存储的位置。
单片机中的堆栈问题
在程序调用时一定要用堆栈,而且这是硬件自动做的。
其他情况下你可以用堆栈来保存数据,也可以用RAM单元。不过堆栈更方便一些。