单片机中程序指针 数据指针 堆栈指针区别

请大神给我通俗一点的答案给我

首先,你要明白一个概念,指针,是做什么的?答案是,指针,是指向地址的。
程序指针,指向的空间,在物理上是Flash,在逻辑上,就是代码空间。比如说51单片机的PC指针,指向的就是Flash,即程序下一步要执行的指令的地址。

数据指针,指向的空间,在物理上有Flash和RAM,在逻辑上是Flash里的常数空间和数据空间,注意,是对于单片机来说,对于我们的电脑,常数空间不是在Flash上。
比如说51单片机的DPTR,如果用MOVC A,@A+DPTR,此时,就是指向常数空间,如果用
MOVX A,@A+DPTR就是指向的数据空间。

堆栈指针,指向的空间,在物理上是RAM,在逻辑上,就是数据空间,是特定的数据空间,堆栈是数据空间中单独划分出来,专门用于寄存中间结果的内存空间。

数据指针和堆栈指针主要有两个区别:
一是数据指针可以指向Flash,即可以指向常数,比如说我们定义一个数组 unsigned char code Table[99],此时,就是DPTR可以指向常数空间。堆栈指针是不可以的,只能是指向RAM。

第二个区别,堆栈指针指向的是特定的数据空间,这个特定的数据空间,是从整个数据空间里划分出来,专门用于作堆栈用的,堆栈区间一旦划分出来,堆栈指针在规则上,就只能在这个范围内活动,如果出了这个范围,可能导致整个程序的崩溃。而数据指针在规则上,可以指向整个数据空间,但是,可以读堆栈空间,不应该去修改,否则也可能导致程序的崩溃。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-23
程序指针PC是指向程序运行轨迹的地址

数据指针DPTR是指向RAM或ROM空间这些存储数据或程序代码的地址
堆栈指针SP是指向内部寄存器(一般08H~FFH)的依靠PUSH或POP在存取数据的地址
第2个回答  2013-06-23
程序指针:访问code代码区用
数据指针:访问data内存区用
堆栈指针:访问data内存区中的堆栈用追问

数据指针和堆栈指针有什么本质区别

单片机中程序指针 数据指针 堆栈指针区别
数据指针和堆栈指针主要有两个区别:一是数据指针可以指向Flash,即可以指向常数,比如说我们定义一个数组 unsigned char code Table[99],此时,就是DPTR可以指向常数空间。堆栈指针是不可以的,只能是指向RAM。第二个区别,堆栈指针指向的是特定的数据空间,这个特定的数据空间,是从整个数据空间里划分出来...

简述单片机有哪几个特殊功能寄存器组成
堆栈指针则用于管理单片机的堆栈。堆栈在函数调用、中断处理等方面起着重要作用。例如,当单片机执行一个函数调用时,当前指令的地址会被压入堆栈,以便函数执行完毕后能够正确地返回到调用点。数据指针是一个16位的寄存器,通常用于指向外部数据存储器的地址。在单片机与外部存储器进行数据交换时,DPTR起着关...

单片机中数据指针DPTR和堆栈指针SP是什么,有什么用及在编程中什么时候要...
SP堆栈指针,主要用来调用子程序或者进入中断的时候保存当前的寄存器内的数据,和当前程序计数器值。在程序返回后把内容弹出。回到断开的程序段处继续执行。

单片机中栈和堆的区别是什么?
1、堆栈空间分配 栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。2、堆栈缓存方式 栈使用的是一级缓存, 他们通常都是被调...

51单片机中PC指针长度为16位,SP长度为8位,数据指针DPTR长度为16位...
2. SP(堆栈指针)是一个8位的寄存器,它用来跟踪堆栈的顶部位置。堆栈是存储临时数据的区域,通常位于单片机的RAM中。8位的SP足以寻址单片机内部RAM的256个存储位置。3. DPTR(数据指针)是一个16位的寄存器,通常用于存储数据存储器(RAM)的地址。尽管它是16位,但在访问时,DPTR被分为高8位和低8...

简述51单片机SFR中PSW,SP,DPTR的用途
2. SP(堆栈指针)指向当前堆栈的顶部位置。在单片机执行中断服务程序或子程序调用时,SP被用来保存下一条要执行的指令地址,这样当子程序或中断服务完成返回时,可以继续执行主程序的下一条指令。此外,SP也可以用来存储临时数据。3. DPTR(数据指针)是一个16位的寄存器对,通常用来访问片内RAM或外部...

单片机寄存器有几种,分别有什么用途
堆栈指针用来指示当前的堆栈位置,它用来存储子程序的返回地址、函数调用参数以及其他临时数据。除了程序计数器和堆栈指针,单片机还有其他一些专用寄存器。例如,状态寄存器(SR)用来存储一些特殊的标志位,例如进位标志、零标志、溢出标志等。这些标志位可以反映计算结果的状态,以便于程序的判断和控制。另外,...

在单片机中什么是堆栈?它的作用是什么?
在单片机系统中,硬件层面通常有一个专门的堆栈指针寄存器,用于指示当前堆栈的顶部位置,软件层面则有相应的指令来进行数据的压栈和弹栈操作。此外,堆栈的使用必须遵循一定的规则,以避免数据覆盖和错误执行等问题。简而言之,堆栈在单片机中是一个重要的数据结构,用于存储程序运行时产生的临时数据和状态...

单片机编程里面,堆栈是什么意思?
在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据,它遵循顺序存取和后进先出(LIFO\/FILO)的原则,这个RAM区叫堆栈。子程序调用和中断服务时CPU自动将当前PC值压栈保存,返回时自动将PC值弹栈;保护现场\/恢复现场;数据传输。

单片机中写程序时为什么要抬高堆栈指针?
如果不调整指针,那么工作寄存器1~3区,以及30H附近的RAM就无法使用;所以,一般单片机复位以后,运行一条MOV SP,#60H的语句,将堆栈指针设置为60H;这样,全部工作寄存器区以及30H~5FH的RAM空间用户就可以使用;60H~7FH的堆栈范围也足够3级子程序或中断嵌套;当然,如果子程序或中断只有1级或最多2级...

相似回答