㈠ 存储器段存储空间问题
段地址为10E4 ,每段的存储空间最大为64K,那么该段最后个存储单元的"物理地址"最大是20E3Fh
还有该段中的第2个存储单元"物理地址"是10E41h
存储器中每个存储单元所占的字节是1字节.
补充:不,10E4是两个字节,如果把它放在内存中,它会占用两个存储单元,即一个字. 1字= 2个字节
㈡ 简述51单片机的存储器逻辑空间分布,并说明当存储器地址发生重叠时应如何处
MCS-51单片机存储器结构
1、 程序存储器
MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的端必须接地。强制CPU从外部程序存储器读取程序。对于内部有ROM的8051等单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。
8051片内有4kB的程序存储单元,其地址为0000H—0FFFH,单片机启动复位后,程序计数器的内容为0000H,所以系统将从0000H单元开始执行程序。但在程序存储中有些特殊的单元,这在使用中应加以注意:
其中一组特殊是0000H—0002H单元,系统复位后,PC为0000H,单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。
另一组特殊单元是0003H—002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下:
0003H—000AH 外部中断0中断地址区。
000BH—0012H 定时/计数器0中断地址区。
0013H—001AH 外部中断1中断地址区。
001BH—0022H 定时/计数器1中断地址区。
0023H—002AH 串行中断地址区。
可见以上的40个单元是专门用于存放中断处理程序的地址单元,中断响应后,按中断的类型,自动转到各自的中断区去执行程序。因此以上地址单元不能用于存放程序的其他内容,只能存放中断服务程序。但是通常情况下,每段只有8个地址单元是不能存下完整的中断服务程序的,因而一般也在中断响应的地址区安放一条无条件转移指令,指向程序存储器的其它真正存放中断服务程序的空间去执行,这样中断响应后,CPU读到这条转移指令,便转向其他地方去继续执行中断服务程序。
2、 数据存储器
数据存储器也称为随机存取数据存储器。MCS-51单片机的数据存储器在物理上和逻辑上都分为两个地址空间,一个是内部数据存储区和一个外部数据存储区。MCS-51内部RAM有128或256个字节的用户数据存储(不同的型号有分别),它们是用于存放执行的中间结果和过程数据的。MCS-51的数据存储器均可读写,部分单元还可以位寻址。
8051内部RAM共有256个单元,这256个单元共分为两部分。其一是地址从00H—7FH单元(共128个字节)为用户数据RAM。从80H—FFH地址单元(也是128个字节)为特殊寄存器(SFR)单元。从图1中可清楚地看出它们的结构分布。
在00H—1FH共32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以R0—R7来命名,我们常称这些寄存器为通用寄存器。这四块中的寄存器都称为R0—R7,那么在程序中怎么区分和使用它们呢?聪明的INTEL工程师们又安排了一个寄存器——程序状态字寄存器(PSW)来管理它们,CPU只要定义这个寄存的PSW的第3和第4位(RS0和RS1),即可选中这四组通用寄存器。对应的编码关系如图2所示。
内部RAM的20H—2FH单元为位寻址区,既可作为一般单元用字节寻址,也可对它们的位进行寻址。位寻址区共有16个字节,128个位,位地址为00H—7FH。位地址分配如表1所示,CPU能直接寻址这些位,执行例如置“1”、清“0”、求“反”、转移,传送和逻辑等操作。我们常称MCS-51具有布尔处理功能,布尔处理的存储空间指的就是这些为寻址区。
㈢ 计算机如何区分存储器中存储的信息是数据还是程序
广义讲,程序也是数据。对于计算机来讲,存储器中存储的都是数据,只是人们的把某些特定的数据让计算机在特定的状态下运行,就是程序。也就是说运行状态的就是程序,非运行状态的就是数据。
在计算机内部,信息都是釆用二进制的形式进行存储运算处理和传输的。信息存储单位有位、字节和字等几种。各种存储设备存储容量单位有KB、MB、GB和TB等几种。
(3)有效段在存储器中的分布扩展阅读
为提高存储器的性能,通常把各种不同存储容量、存取速度和价格的存储器按层次结构组成多层存储器,并通过管理软件和辅助硬件有机组合成统一的整体,使所存放的程序和数据按层次分布在各存储器中。
主要采用三级层次结构来构成存储系统,由高速缓冲存储器Cache、主存储器和辅助存储器组成。图中自上向下容量逐渐增大,速度逐级降低,成本则逐次减少。
一个较大的存储系统由各种不同类型的存储设备构成,形成具有多级层次结构的存储系统。该系统既有与CPU相近的速度,又有极大的容量,而价格又是较低的。可见,采用多级层次结构的存储器系统可有效地解决存储器的速度、容量和价格之间的矛盾。
㈣ c++ 类,在内存中是如何分布的
变量可以存储在存储器的不同部分,这取决于它们的寿命。定义在函数之外的变量(全局变量或静态外部变量)和函数内定义的静态变量是程序运行的整个过程,这些过程存储在数据段(数据集)中。数据段是内存中这些变量的固定空间。它分为两个部分,一个用于存储初始化变量,另一个用于存储未初始化变量。
㈤ 存储器的分段
这里很清楚啊。CPU的地址线是20位,低4位必须为0,那么就剩下16位可以用来分段。2的16次方正好是64K.这就是答案了。
㈥ 段存储器,段的意思
段寄存器是因为对内存的分段管理而设置的。计算机需要对内存分段,以分配给不同的程序使用(类似于硬盘分页)。在描述内存分段时,需要有如下段的信息:1.段的大小;2.段的起始地址;3.段的管理属性(禁止写入/禁止执行/系统专用等)。需要用8个字节(64位)存储这些信息,但段寄存器只有16位,因此段寄存器中只能存储段号(segment selector,也译作“段选择符”),再由段号映射到存在内存中的GDT(global (segment) descriptor table,全局段号记录表),读取段的信息。16位CPU有四个16位段寄存器,所以,其程序可同时访问四个不同含义的段。8086CPU有20根地址线,最大可寻址内存空间为1MB。而8086的寄存器只有16位,指令指针(IP)和变址寄存器(SI、DI)也是16位的。用16位的地址寻址1MB空间是不可能的。所以就要把内存分段,也就是把1MB空间分为2^4,即16个段,每段不超过64KB(2^16,16位数据线就可以寻址)。在8086中设置4个16位的段寄存器,用于管理4种段:CS是代码段,DS是数据段,SS是堆栈段,ES是附加段。把内存分段后,每一个段就有一个段基址,段寄存器保存的就是这个段基址的高16位,这个16位的地址左移四位(后面加上4个0)就可构成20位的段基址。
我的回答你还满意吗?望采纳,谢谢!
㈦ 8086可以把存储器分成几个段各段的地址又怎么确定
1、
(1)段地址:2314h,偏移地址:0035h,物理地址:23175h
(2)
段地址:1fd0h,偏移地址:00a0h,物理地址:1fda0h
2、依次为85h~8ch,计算公式:有效地址=物理地址-ds*16。
由于是16位机,一次处理数据16位,即2字节,这里有8个字节,所以,要访问4次。
㈧ 80486系统中,存储器为什么要分段分段的原则是什么
80386和80486cpu的地址线和数据线各为32,也就是说在实模式下该cpu访问的最大存储地址空间为2^32=4GB。那么如果我要访问的地址的空间起始地址超过了4GB呢?那怎么办,是不是就没办法了呢?
为解决这一问题,在这里提到的就是保护模式,保护模式下程序员可以获得更大的存储地址空间(即虚拟地址)。这样,对于80286来说,偏移量为16位,每个段最大为64KB,可提供的虚拟存储空间为1GB(2^30个字节)。对于386和486CPU来说,偏移量为32位,每个段最大为4GB,可提供的虚拟存储空间为2^46=64TB。保护模式下对存储器分段也就是这个原理,这也是为了方便管理存储器而采用的更有效的方法。后面也有比分段管理更高级的分页管理机制。当然,这是后话了。(这个和寄存器间接寻址类似却略有不同)。
没看懂的话建议您去看一些比较基础的书籍,原理性的东西。这本《微机原理》貌似就不错,呵呵。希望对你有所帮助。
㈨ 在存储器分段结构中,每个段区最大可占用多少地址范围,为什么
8086/8088系统中,存储器为什么要分段?一个段最大为多少字节?最小为多少字节? 解:分段的主要目的是便于存储器的管理,使得可以用16位寄存器来寻址20位的内存空间。一个段最大为64KB,最小为16B。
㈩ 存储器地址的段地址、偏移地址和物理地址
1、(1)段地址:2314H,偏移地址:0035H,物理地址:23175H (2) 段地址:1FD0H,偏移地址:00A0H,物理地址:1FDA0H2、依次为85H~8CH,计算公式:有效地址=物理地址-DS*16。由于是16位机,一次处理数据16位,即2字节,这里有8个字节,所以,要访问4次。