单片机堆栈问题? 单片机堆栈工作过程

6851℃ NATASHA

单片机堆栈问题?单片机堆栈工作过程

单片机汇编知识堆栈问题

上电默认为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单元。不过堆栈更方便一些。