单片机地址空间,堆栈理解
data –可寻址片内ram 0x00-0x7f
bdata—可位寻址片内ram
idata—可寻址片内ram,允许访问全部内部ram 0x00-0xff
padata—分页寻址访问片外ram
xdata—可寻址片外ram 0x0000- 0xffff
code--程序存储区单片机存储器分ROM跟RAM之分,RAM存放中间结果,数据和经常变换的代码,ROM存放code。51单片机采用的是哈弗结构,即数据跟代码拥有单独的地址空间。存储器可以分为程序存储器(eerom,flash之类),内部数据存储器(ram),SFR,位地址空间和外部数据存储器。内部数据存储器在物理上分为内部SRAM和特殊功能寄存器,而内部分为低(0x00-0x7f)和(0x80-0xff),高128字节地址重复,需要不同的访问方式。SFR用直接寻址方式,SRAM需要间接。这里SFR是寄存器,硬件上是中央处理器的内部组成部分,访问速度很快。在低128B的SRAM,0x00-0x1f是4个通用工作寄存器,每组有R0-R7。使用哪一组,可以通过PSW中的RS1,RS0来配置。位寻址是在0x20-0x2f
程序内存可以分为几个区,栈区(stack),堆区(Heap),全局区(static),文字常亮区,程序代码区。程序编译之后,全局变量,静态变量已经分配好内存空间,在函数运行时,程序需要为局部变量分配栈空间,当中断来时,也需要将函数指针入栈,保护现场,以便于中断处理完之后再回到之前执行的函数。栈是从高到低分配,堆是从低到高分配。我们一般说的堆栈指的栈。堆栈又分硬堆栈和软堆栈,硬堆栈即SP,从片内RAM的顶部向下生长。软堆栈在硬堆栈跟全局变量区之间的空间,C51函数调用通过R0-R7和栈来实现。
为什么单片机启动时,不需要用bootloader将代码从ROM搬移到RAM,而ARM则需要。这里我们可以先看看单片机程序执行的过程,单片机执行分三个步骤,取执行---分析指令----执行指令。取指令的任务是:根据PC的值从程序存储器读出指令,送到指令寄存器。然后分析执行执行。这样单片机就从内部程序存储器去代码指令,从RAM存取相关数据。要知道RAM取数的速度是远高于ROM的,但是单片机因为本身运行频率不高,所以从ROM取指令慢并不影响。而ARM不同,cpu运行的频率高,远大于从ROM读写的速度,所以一般有操作系统,都需要将代码部分拷贝到RAM中再执行。
51单片机学习笔记(51单片机的地址空间)一
MCS-51单片机在物理结构上有四个存储空间
1,片内程序存储器(片内ROM) 类似电脑上的硬盘(只不过很小)
2,片外程序存储器(片外ROM)
3,片内数据存储器(片内RAM)
4,片外数据存储器(片外RAM)
在逻辑上(用户的角度上)MSC-51单片机有三个存储空间
1,片内外统一编址的64K的程序存储器(ROM)地址空间(MOVC)
2,256B的片内数据存储器(片内RAM)地址空间 (MOV) :因为MSC-51单片机是8位的所以能够访问的最大地址空间为2^8次方 即256个字节
3,以及64K片外数据存储器(片外RAM)地址空间 (MOVX)
MSC-51单片机内部数据存储区划分 (以下内容部分来自网络,有自己的理解,可能有错,还望指出)
自己理解:因为MSC-51单片机是8位的,所以能够访问的空间地址编号只能有256个,即0~255,十六进制:0x00 ~0xFF。
地址空间划分:
1:0x00 ~ 0x1F (32个字节)
工作寄存器有4组,每组都是8个工作寄存器R0~R7,通过PSW程序状态字寄存器中的RS1,RS0两位选择使用哪一组,如果不选,默认选择第0组。
RS1 RS0 组合为 0 0时,选中第0组工作寄存器,RO~R7 地址为00H ~07H.
RS1 RS0 组合为 0 1时,选中第1组工作寄存器, RO~R7 地址为08H ~0FH.
RS1 RS0 组合为 1 0时,选中第2组工作寄存器, RO~R7 地址为10H ~17H.
RS1 RS0 组合为 1 1时,选中第3组工作寄存器, RO~R7 地址为18H ~1FH.
当使用R0-R7来表示操作数时,属于寄存器寻址方式
相关问答
8051 单片机 的位 地址空间 共分几个区域?8051单片机的位地址空间分为两个区域,第一个是20H~2FH,共16个字节,可位寻址128bit;第二个空间分布在sfr特殊功能寄存器区,凡是地址能被8整除的特殊功能寄存...
单片机 的内部储存区域划分?内部数据存储器RAM物理上分为两大区:00H~7FH即128B内RAM和SFR区。数据存储器空间(低128单元);特殊功能寄存器空间(高128单元);这两个空间是相连的,...内...
13、51系列 单片机地址 总线是位,数据总线是位.14、89C51 单片 ...[最佳回答]13、51系列单片机地址总线是16位,数据总线是8位.14、89C51单片机有2个16位可编程定时器/计数器,有4种工作方式.15、80C51单片机片内ROM的容...
51 单片机 逻辑 地址空间 区别?MCS-51单片机在物理结构上有四个存储空间:1、片内程序存储器2、片外程序存储器3、片内数据存储器4、片外数据存储器但在逻辑上,即从用户的角度上,8051...
51 单片机地址 宽多少?51单片机的地址宽度为8位,也就是说它可以寻址256个不同的内存位置。每个内存位置可以存储一个字节的数据。这意味着51单片机可以访问的最大内存空间为256字节...
单片机 一条指令如何知道占多少 地址 ?回答如下:单片机的指令地址由指令集的位数决定。一般情况下,单片机指令的地址是固定的,占用连续的内存空间。例如,对于8位单片机,指令地址通常为8位,即地...
51 单片机 的7种寻址方式适用于什么寻址 空间 ?80C51有七种寻址方式:1、立即寻址,寻址空间为ROM;2、直接寻址,寻址空间为片内RAM的低128B和特殊功能寄存器;3、寄存器寻址,寻址空间为A、B、DPTR、CY、...
c语言 地址 占多少位?C语言的指针地址范围是4字节空间,即从地址0x00000000~地址0xFFFFFFFF。但其中有些字段是系统保护的或所使用的硬件平台根本就不存在,所以用户指针并不能完全使...
51pc16位 单片机 寻址范围?因为针对ROM寻址的PC是16位的,寻址RAM的DPTR也是16位的,16位地址空间就是64K范围。计算机存储器的容量是以字节为最小单位来计算的,对于拥有128个存储单元的存...
...51 单片机 内部RAM共分成个功能区,其高端128字节的 地址空间 ...[最佳回答]1.0000H,07H,第0组2.程序,数据,三,SFR,21个3.没看懂你的空在哪?可以看成是数据总线,地址总线和控制总线!4.外部中断0,外部中断1,定时/计数器0...