51单片机的堆栈操作

这篇具有很好参考价值的文章主要介绍了51单片机的堆栈操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

51单片机的堆栈结构属于向上生长,也就是说, 每压进一个数据, 堆栈指针的内容自动加一。

也就是说, 堆栈指针永远指向栈顶。(即栈顶在内部RAM中的地址位置)

***************************************************************************************

进栈出栈指令:

PUSH driect进栈指令,操作数是一个直接地址,即:将该地址上的内容送到堆栈指针SP所指向的存储单元中。(注意:SP指针指向的地址应先加一后, 再将driect地址上的内容压入sp此时指向的地址

POP direct 出栈指令, 操作数是一个直接地址,即:将堆栈指针指的地址上的值,弹入direct地址。之后,SP指针减一。

************************************************************************************************

举例:

RAM区中开辟一段地址4000H-4005H, 对应的内容: 4000H:0FAH, 4001H:0FBH, 4002H:0FCH, 4003H:0FDH, 4004H:0FEH,

开辟堆栈位置, 从0000H开始,到0005H。

即堆栈指针SP起始地址:0000H

(这里只是为方便理解举例, 实际上00H的位置是工作组寄存器,绝对不能进行压栈。压栈的起始实际地址应是用户RAM区, 也就是30H起步。 因此这里为了避免误解, 使用了一个明显假的32位的举例地址0000H(因为51中片内RAM是没有32位地址的))

**********************************************************************************************

操作开始:

栈顶现在是0000H, 进行压栈:

PUSH 4000H;此时:栈顶地址(也就是SP指向的地址)是0001H,上面的内容是:0FAH

PUSH 4001H; 此时:栈顶地址(也就是SP指向的地址)是0002H,上面的内容是:0FBH

PUSH 4002H;此时:栈顶地址(也就是SP指向的地址)是0003H,上面的内容是:0FCH

PUSH 4003H; 此时:栈顶地址(也就是SP指向的地址)是0004H,上面的内容是:0FDH

PUSH 4004H;此时:栈顶地址(也就是SP指向的地址)是0005H,上面的内容是:0FEH

此时压栈结束,堆栈指针指向的地址是0005H, 也就是栈顶。 里面的内容是刚刚从4004H这个地址上拿的内容。(也就是说, 由于堆栈指针每向堆栈压入一个字节的数据, SP都会加一,因此, 堆栈指针永远指向栈顶位置, 本例中:0005H)

下面开始出栈:

使用POP direct指令, 此时sp指针指向栈顶0005H位置

POP 4004H;即将0005H上的内容0FEH 弹到4004H这个位置上,之后SP指针减一。

POP 4003H;即将0004H上的内容0FDH 弹到4003H这个位置上,之后SP指针减一。

POP 4002H;即将0003H上的内容0FCH 弹到4002H这个位置上,之后SP指针减一。

POP 4001H;即将0002H上的内容0FBH 弹到4001H这个位置上,之后SP指针减一。

POP 4000H;即将0001H上的内容0FAH 弹到4000H这个位置上,之后SP指针减一。

可见, 第一个弹出的, 是栈顶0005H这个地址上存的内容。 这个内容是刚刚从4004H这个地址上拿的内容, 也就是说, 弹出的,是最后进栈的一个数据。 随着不断的弹出, 最后弹出的, 是最先进栈的内容:0FAH

也就是说, 51单片机的堆栈, 是一个后进先出机制。文章来源地址https://www.toymoban.com/news/detail-487466.html

到了这里,关于51单片机的堆栈操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机原理与应用以及C51编程技术——硬件体系结构梳理

    内部程序存储器ROM :4K的flash程序存储器; 寄存器区 :4个寄存器区,每个区有R0-R7八个工作寄存器; 8位并行输入输出端口 :P0、P1、P2和P3; 定时/计数器 :2个16位的定时/计数器 T0、T1; 串型口 :全双工串行端口(RXD:接收端、TXD发送端); 中断系统 :设有5个中断源(T

    2023年04月10日
    浏览(94)
  • 单片机C51液晶显示器LM016L的操作方法

    注:这里上面的应该为:sbit en=P2^2; P需要大写,刚开始截图的时候未注意到,抱歉。 以上就是今天要讲的内容,本文简单介绍了单片机中液晶显示器LM016L的使用,还有许多的命令没有提到,大家可以再参考书籍或其他博客等进行拓展。 最后:希望大家学习进步!事业有成!

    2024年02月01日
    浏览(44)
  • 单片机的存储、堆栈与程序执行方式

    如图所示位STM32F103ZET6的参数: 单片机的ROM(内部FLASH):512KB,用来存放程序代码的空间。 单片机的RAM:64KB,一般都被分配为堆、栈、变量等的空间。 单片机中的堆和栈是用来存储程序运行时的数据的两个重要区域。堆和栈都存在于单片机的RAM(随机存储器)中。 堆是用来

    2024年02月01日
    浏览(33)
  • 【期末不挂科-单片机考前速过系列P8】(第八章:21题速过AT89S51单片机的内部硬件结构)经典例题盘点(带图解析)

    前言 大家好吖,欢迎来到 YY 滴C++系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁 主要内容含: 欢迎订阅 YY 滴C++专栏!更多干货持续更新!以下是传送门! YY的《C++》专栏 YY的《C++11》专栏 YY的《Linux》专栏 YY的《数据结构》专栏 YY的《C语言基础》专栏 YY的《初学者易

    2024年01月19日
    浏览(61)
  • 单片机 | 51单片机原理

    【金善愚】 单片机应用原理篇 笔记整理 课程视频 :https://space.bilibili.com/483942191/channel/collectiondetail?sid=51090 三类 电源及晶振引脚(共4只) 控制引脚(共4只) 端口引脚(共32只) Vcc(40脚):电源端,接+5V电源。 Vss(20脚):接地端。 XTAL1(19脚):接外部晶振和微调电容的一端。 XTAL2(18脚):

    2024年02月02日
    浏览(53)
  • 51单片机项目(9)——基于51单片机的电子琴设计

    简易电子琴设计设计内容: 1.用矩阵键盘代表琴键,至少能弹出8个音符,分别是:音符1.23.4.,5,6,  2.键按下的时间长短表征节拍的长短,用蜂鸣器发出声音 3.数码管显示出当前音符 4.音量可调 (代码及其工程文件放在最后) 电路图如下: 51单片机电子琴是一种基于51单片机(

    2024年02月09日
    浏览(45)
  • 在学习c51单片机实验七(双机通信及pcb设计)操作Keil uVision4和protus的时候遇到的两个坑

    特别是懒的时候,对于新手,每次用一个工程文件,因为创建不熟练,就容易出现这个问题 Build target \\\'Target 1\\\' linking... *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS     SYMBOL:  MAP     MODULE:  shiyan6right.obj (SHIYAN6RIGHT) *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS     SYMBOL:  MAIN     MODULE:  shi

    2024年02月03日
    浏览(94)
  • 51单片机项目(7)——基于51单片机的温湿度测量仿真

    本次做的设计,是利用DHT11传感器,测量环境的温度以及湿度,同时具备温度报警的功能:利用两个按键,设置温度阈值的加和减,当所测温度大于温度阈值的时候,蜂鸣器就会响起,进行报警提示。 同时系统还有一个LCD1602屏幕,用于显示实时的温度湿度,还可以显示温度阈

    2024年02月10日
    浏览(47)
  • 51单片机:设计一单片机双机通信电路

    鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域优质创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) 设计一单片机双机通信电路。要求编程实现:甲单片机系统中的按键可以控制乙单片机系统中的数码管(MPX8)动

    2024年02月20日
    浏览(51)
  • 51单片机的基础知识——单片机简介

    仅用于学习交流!!! 仅用于学习交流!!! 仅用于学习交流!!! 单片机,即单片微型计算器,简称为单片机。用专业术语来讲单片机就是在一块硅片上集成了微处理器、存储器以及各种输入/输出(I/O,I指的是input,O指的是output)口的芯片。通俗点讲,单片机是一块集

    2024年02月03日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包