8085微处理器中的堆栈和堆栈指针


堆栈是一个后进先出 (LIFO) 的数据结构,它在RAM区域中实现,用于在微处理器跳转到子程序时存储地址和数据。然后,返回地址被压入此堆栈。此外,我们还可以使用堆栈来交换两个寄存器和寄存器对的值。

在程序员对8085的理解中,到目前为止只讨论了通用寄存器A、B、C、D、E、H和L以及标志寄存器。但在8085的完整程序员视图中,还有两个16位宽的特殊用途寄存器。它们是堆栈指针SP和程序计数器PC。堆栈指针寄存器将保存堆栈顶部位置的地址。程序计数器是一个寄存器,它始终保存内存位置的地址,从该位置将获取下一条要执行的指令。下图显示了8085的完整程序员视图。

图:8085的程序员视图

SP是一个特殊的16位寄存器。它包含一个内存地址。假设SP的内容为FC78H,则8085对其解释如下:

内存位置FC78H、FC79H……FFFFH包含有用的信息。换句话说,这些位置被视为已填充的位置。内存位置FC77H、FC76H……0000H没有任何有用的信息。换句话说,这些位置被视为空位置。

在堆栈上,我们可以执行两个操作:PUSH和POP。在PUSH操作中,SP寄存器减2,并将新数据项插入堆栈顶部。另一方面,在POP操作中,必须从堆栈顶部删除数据项,并且SP寄存器将增加2。

因此,SP的内容指定了堆栈中最顶端的可用位置。换句话说,它指示具有最小地址且包含有用信息的内存位置。下图对此进行了图示表示:

图:SP内容的解释

更新于:2023年10月4日

30K+ 次浏览

启动您的职业生涯

完成课程后获得认证

开始
广告