您的位置 首页 电路

详解单片机仓库

详解单片机堆栈-如果了解一点汇编编程话,就可以知道,堆栈是内存中一段连续的存储区域,用来保存一些临时数据。通常用来保存CALL指令调用子程序时的返回地址,RET指令从堆栈中获取返回地址。中断指令INT调用中断程序时,将标志寄存器值、代码段寄存器CS值、指令指针寄存器IP值保存在堆栈中。

看关于单片机方面的书本的时分,总是能看到他人说的一些仓库啊什么的操作,之前看到这个术语就直接越过,没想到去探求单片机内部的原理。可是最近课程学习微机原理这门课,需求咱们写汇编程序,汇编里边常常遇到仓库这个东西,所以就找了个时刻把仓库给完全的搞一下。

假如了解一点汇编编程话,就能够知道,仓库是内存中一段接连的存储区域,用来保存一些暂时数据。一般用来保存CALL指令调用子程序时的回来地址,RET指令从仓库中获取回来地址。中止指令INT调用中止程序时,将标志寄存器值、代码段寄存器CS值、指令指针寄存器IP值保存在仓库中。

仓库也能够用来保存其他数据。

仓库操作由PUSH,POP两条指令来完结;

仓库操作的操作数均为子类型(两个字节)进行操作。

程序内存能够分为几个区,栈区(stack),堆区(Heap),大局区(staTIc),文字常亮区,程序代码区。

程序编译之后,大局变量,静态变量现已分配好内存空间,在函数运转时,程序需求为局部变量分配栈空间,当中止来时,也需求将函数指针入栈,维护现场,以便于中止处理完之后再回到之前履行的函数。

栈是从高到低分配,堆是从低到高分配。

咱们一般说的仓库指的栈。仓库又分硬仓库和软仓库,硬仓库即SP,从片内RAM的顶部向下成长。软仓库在硬仓库跟大局变量区之间的空间,C51函数调用经过R0-R7和栈来完成。

为什么单片机启动时,不需求用bootloader将代码从ROM搬移到RAM,而ARM则需求。这儿咱们能够先看看单片机程序履行的进程,单片机履行分三个进程,取履行—剖析指令—-履行指令。取指令的使命是:依据PC的值从程序存储器读出指令,送到指令寄存器。然后剖析履行履行。这样单片机就从内部程序存储器去代码指令,从RAM存取相关数据。要知道RAM取数的速度是远高于ROM的,可是单片机因为自身运转频率不高,所以从ROM取指令慢并不影响。而ARM不同,cpu运转的频率高,远大于从ROM读写的速度,所以一般有操作体系,都需求将代码部分拷贝到RAM中再履行。

再来看一个网上很盛行的经典比方:

main.cpp

int a = 0; 大局初始化区

char *p1; 大局未初始化区

main()

{

int b; 栈

char s[] = “abc”; 栈

char *p2; 栈

char *p3 = “123456”; 123456/0在常量区,p3在栈上。

staTIc int c =0; 大局(静态)初始化区

p1 = (char *)malloc(10); 堆

p2 = (char *)malloc(20); 堆

}

不知道你是否有点了解了,堆和栈的第一个差异便是请求方法不同:栈(英文名称是stack)是体系主动分配空间的,例如咱们界说一个 char a;体系会主动在栈上为其拓荒空间。而堆(英文名称是heap)则是程序员依据需求自己请求的空间,例如malloc(10);拓荒十个字节的空间。因为栈上的空间是主动分配主动收回的,所以栈上的数据的生计周期只是在函数的运转进程中,运转后就开释掉,不能够再拜访。而堆上的数据只需程序员不开释空间,就一向能够拜访到,不过缺陷是一旦忘掉开释会形成内存走漏。

网上一个很好的比方,摘录下来,以便了解:

运用栈就象咱们去饭馆里吃饭,只管点菜(宣布请求)、付钱、和吃(运用),吃饱了就走,不用理睬切菜、洗菜等准备作业和洗碗、刷锅等扫尾作业,他的优点是方便,可是自由度小。

运用堆就象是自己动手做喜欢吃的菜肴,比较费事,可是比较契合自己的口味,并且自由度大。

总结:

其实仓库便是单片机中的一些存储单元,这些存储单元被指定保存一些特别信息,比方地址(维护断点)和数据(维护现场)。

假如非要给他加几个特色的话那便是:1、这些存储单元中的内容都是程序履行进程中被中止打断时,事故现场的一些相关参数。假如不保存这些参数,单片机履行完中止函数后就无法回到主程序持续履行了。

2、这些存储单元的地址被记在了一个叫做仓库指针(SP)的当地。

好了,以上便是这些。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/dianlu/346428.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部