㈠ 简述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具有布尔处理功能,布尔处理的存储空间指的就是这些为寻址区。
㈡ 通用寄存器有哪些
1、数据寄存器
数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。
2、变址寄存器
32位CPU有2个32位通用寄存器ESI和EDI。其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。
3、指针寄存器
32位CPU有2个32位通用寄存器EBP和ESP。其低16位对应先前CPU中的SBP和SP,对低16位数据的存取,不影响高16位的数据。
4、段寄存器
段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。
5、指令指针寄存器
32位CPU把指令指针扩展到32位,并记作EIP,EIP的低16位与先前CPU中的IP作用相同。 指令指针EIP、IP(Instruction Pointer)是存放下次将要执行的指令在代码段的偏移量。
(2)bh是什么存储器扩展阅读
寄存器是CPU内部重要的数据存储资源,用来暂存数据和地址,是汇编程序员能直接使用的硬件资源之一。由于寄存器的存取速度比内存快,所以,在用汇编语言编写程序时,要尽可能充分利用寄存器的存储功能。
寄存器一般用来保存程序的中间结果,为随后的指令快速提供操作数,从而避免把中间结果存入内存,再读取内存的操作。在高级语言(如:C/C++语言)中,也有定义变量为寄存器类型的,这就是提高寄存器利用率的一种可行的方法。
另外,由于寄存器的个数和容量都有限,不可能把所有中间结果都存储在寄存器中,所以,要对寄存器进行适当的调度。根据指令的要求,如何安排适当的寄存器,避免操作数过多的传送操作是一项细致而又周密的工作。
参考资料来源:网络-通用寄存器
㈢ 汇编语言寄存器都叫什么
1、寄存器
32位寄存器有16个,分别是:
4个数据寄存器(EAX、EBX、ECX、EDX)。
2个变址和指针寄存器(ESI和EDI);2个指针寄存器(ESP和EBP)。
6个段寄存器(ES、CS、SS、DS、FS、GS)。
1个指令指针寄存器(EIP);1个标志寄存器(EFlags)。
2、数据寄存器
数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器猛基的时间。
32位CPU有4个32位通用寄存器:EAX、EBX、ECX和EDX。对低16位数据的取存,不会影响高16
位的数据,这些低16位寄存器分别命名为AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。
4个16位寄存器又可分割成8个独立的8位寄存器(AX:ah~al、BX:bh~bl、CX:ch~cl:DX:dh~dl)。
每个寄存器都有自己的名称,可独立存取。程序员可利用数据寄存器的这种“可合可分”的特性,灵活地处理字/
字节的信息。
AX和al通常称为累加器,用累加器进行的操作可能需要更少时间,累加器可用于乘、除、输入/输出等操作,
它们的使用频率很高。
BX称为基地址寄存器,它可作为存储器指针来使用。
CX称为计数寄存器,在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用cl来
指明位移的位数。
DX称为数据寄存器,在进行乘、除运算时,枝巧谨它可以为默认的操作数参与运算,也可用于存放I/O的端口地址。
在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,但在32位CPU
中,宽核其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据、保存算术逻辑运算结果,而且也可
作为指针寄存器,所以,这些32位寄存器更具有通用性。
3、变址寄存器
32位CPU有2个32位通用寄存器ESI和EDI,其低16位对应先前CPU中的SI和DI,对低16位数据的
存取,不影响高16位的数据。
ESI、EDI、SI和DI称为变址寄存器,它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器
操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。
变址寄存器不可分割成8位寄存器,作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。
它们可作一般的存储器指针使用,在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的
功能。
4、指针寄存器
32位CPU有2个32位通用寄存器EBP和ESP,其低16位对应先前CPU中的BP和SP,对低16位数
据的存取,不影响高16位的数据。
EBP、ESP、BP和SP称为指针寄存器,主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器
操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。
指针寄存器不可分割成8位寄存器,作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。
它们主要用于访问堆栈内的存储单元,并且规定:
BP为基指针寄存器,用它可直接存取堆栈中的数据。
SP为堆栈指针寄存器,用它只可访问栈顶。
5、段寄存器
段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成
的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。
32位CPU有6个段寄存器,分别如下:
CS:代码段寄存器 ES:附加段寄存器
DS:数据段寄存器 FS:附加段寄存器
SS:堆栈段寄存器 GS:附件段寄存器
在16位CPU系统中,只有4个段寄存器,所以,程序在任何时刻至多有4个正在使用的段可直接访问,在
32位微机系统中,它有6个段寄存器,所以在此环境下开发的程序最多可同时访问6个段。
32位CPU有两个不同的工作方式:实方式和保护方式。在每种方式下,段寄存器的作用是不同的,有关规定
简单描述如下:
实方式:段寄存器CS、DS、ES和SS与先前CPU中的所对应的段寄存器的含义完全一致,内存单元的逻辑
地址仍为“段地址:偏移地址”的形式,为访问某内存段内的数据,必须使用该段寄存器和存储单元的偏移地址。
保护方式:在此方式下,情况要复杂得多,装入段寄存器的不再是段值,而是称为“选择子”的某个值。
6、指令指针寄存器
32位CPU把指令指针扩展到32位,并记作EIP,EIP的低16位与先前CPU中的IP作用相同。
指令指针EIP、IP是存放下次将要执行的指令在代码段的偏移地址,在具有预取指令功能的系统中,下次要执
行的指令通常已被预取到指令队列中,除非发生转移情况,所以,在理解它们的功能时不考虑存在指令队列的情
况。
在实方式下,由于每个段的最大范围为64KB,所以,EIP的高16位肯定都为0,此时,相当于只用其低16
位的IP来反映程序中的指令的执行次序。
7、标志寄存器
1.运算结果标志位。一共6个,包括:CF进位标志位、PF奇偶标志位、AF辅助进位标志位、ZF零标志位、
SF符号标志位、OF溢出标志位。
2.状态控制标志位。一共3个,包括:TF追踪标志位、IF中断允许标志位、DF方向标志位。
以上标志位在第7章里都讲过了,在这里就不再解释了,现在讲讲32位标志寄存器增加的4个标志位。
1. I/O特权标志IOPL。
IOPL用两位二进制位来表示,也称为I/O特权级字段,该字段指定了要求执行I/O指令的特权级,如果当前
的特权级别在数值上小于等于IOPL的值,那么,该I/O指令可执行,否则将发生一个保护异常。
2. 嵌套任务标志NT。
NT用来控制中断返回指令IRET的执行。具体规定如下:
(1) 当NT=0,用堆栈中保存的值恢复EFlags、CS和EIP,执行常规的中断返回操作。
(2) 当NT=1,通过任务转换实现中断返回。
3. 重启动标志RF。
RF用来控制是否接受调试故障。规定:RF=0时,表示接受,否则拒绝。
4. 虚拟8086方式标志VM。
如果VM=1,表示处理机处于虚拟的8086方式下的工作状态,否则,处理机处于一般保护方式下的工作状态。
8、32位地址的寻址方式
最后说一下32位地址的寻址方式。在前面我们学习了16位地址的寻址方式,一共有5种,在32位微机系统
中,又提供了一种更灵活、方便但也更复杂的内存寻址方式,从而使内存地址的寻址范围得到了进一步扩大。
在用16位寄存器来访问存储单元时,只能使用基地址寄存器(BX和BP)和变址寄存器(SI和DI)来作为
偏移地址的一部分,但在用32位寄存器寻址时,不存在上述限制,所有32位寄存器(EAX、EBX、ECX、
EDX、ESI、EDI、EBP、和ESP)都可以是偏移地址的一个组成部分。
当用32位地址偏移量进行寻址时,偏移地址可分为3部分:
1. 一个32位基址寄存器(EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP)。
2. 一个可乘以1、2、4、8的32位变址寄存器(EAX、EBX、ECX、EDX、ESI、EDI和EBP)。
3. 一个8位~32位的偏移常量。
比如,指令:mov ebx, [eax+edx*2+300]
Eax就是基址寄存器,edx就是变址寄存器,300H就是偏移常量。
上面那3部分可进行任意组合,省去其中之一或之二。
下面列举几个32位地址寻址指令:
Mov ax, [123456]
Mov eax, [ebx]
Mov ebx, [ecx*2]
Mov ebx, [eax+100]
Mov ebx, [eax*4+200]
Mov ebx, [eax+edx*2]
Mov ebx, [eax+edx*4+300]
Mov ax, [esp]
由于32位寻址方式能使用所有的通用寄存器,所以,和该有效地址相组合的段寄存器也就有新的规定,具体
规定如下:
1. 地址中寄存器的书写顺序决定该寄存器是基址寄存器还是变址寄存器。
如:[ebx+ebp]中的ebx是基址寄存器,ebp是变址寄存器,而[ebp+ebx]中的ebp是基址寄存器,ebx是变
址寄存器,可以看出,左边那个是基址寄存器,另一个是变址寄存器。
2. 默认段寄存器的选用取决于基址寄存器。
3. 基址寄存器是ebp或esp时,默认的段寄存器是SS,否则,默认的段寄存器是DS。
4. 在指令中,如果显式地给出段寄存器,那么显式段寄存器优先。
下面列举几个32位地址寻址指令及其内存操作数的段寄存器。
指令列举: 访问内存单元所用的段寄存器
mov ax, [123456] ;默认段寄存器为DS。
mov ax, [ebx+ebp] ;默认段寄存器为DS。
mov ebx, [ebp+ebx] ;默认段寄存器为SS。
mov ebx, [eax+100] ;默认段寄存器为DS。
mov edx, ES:[eax*4+200] ;显式段寄存器为ES。
mov [esp+edx*2], ax ;默认段寄存器为SS。
mov ebx, GS:[eax+edx*8+300] ;显式段寄存器为GS。
mov ax, [esp] ;默认段寄存器为SS。
㈣ 汇编语言存储器操作数是什么
对,家方括号的就是存储器。存储器内放的是十六进制的数,一个16进制的数化为2进制数就是4位,【1200H】是占16位,【BX】是存储器,BX就是16位寄存器了,BX由8位寄存器BH和BL组成,多看看书就会明白的
㈤ 汇编语言的AX,BX,CX,DX,分别表示什么
AX寄存器称为累加器(Accumulator),使用时主要用于存放数据,如存放算术、逻辑运算中的操作数或结果。也可临时时用于存放地址。
BX寄存器称为基址寄存器(BaseRegister),常用来存放访问存储器时的地址。
CX寄存器称为计数寄存器(CountRegister),常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器。
DX寄存器称为数据寄存器(DataRegister),常用于数据传递。在寄存器间接寻址中的I/O指令中存放I/O端口的地址。
(5)bh是什么存储器扩展阅读:
汇编语言中的AX、BX、CX、DX作为CPU内部的通用寄存器中的数据寄存器助记符用来存放参与运算的数据或是存储运算的结果。这四个数据寄存器都是16位的,实际由两个8位寄存器组合而成,这是为了灵活处理8位数据。
AX、BX、CX、DX每个寄存器可以将高、低8位分别作为独立的8位寄存器使用。其中的高8位用AH、BH、CH、DH表示,低8位用AL、BL、CL、DL表示。
㈥ 单片机内部数据储存地址中的00H 和0FH,FFH代表什么意思。。。F 和0是什么
表示十六进制数的意思。
00H,0FH,FFH是一个十六进制数,它等于0,0FH=15,FFH=255,用于内部数据存储的内存。
00H~FFH相当于小数0~255
例如:二进制十六进制十进制
00000000b000h
0000000101h1b
0000001002bh2
00001001b09h9
00001010b010
000010110bh11b
000011000ch12b
00001101b0dh13
00001110b014
00001111b0fh15
(6)bh是什么存储器扩展阅读:
注意事项:
8051系列单片机有两个定时器:T0和T1,分别称为定时器和T1定时器,这两个定时器是16位定时器/计数器,8052系列单片机新增第三定时器/计数器T2,具有定时或事件计数功能,常用于时间控制,延时,外部时间计数和检测等。
8051单片机的两个定时器T0和T1分别由两个特殊的功能寄存器组成,T0由专用寄存器TH0和TL0组成,T1由TH1和TL1组成。
当作为定时器使用时,定时器对8051单片机芯片振荡器输出的脉冲数进行12分频后计数,即每台机器周期使定时器T0/T1的寄存器值自动累加1,直到溢出,之后循环计数从0开始;所以,定时器的分辨率是时钟频率的1/12。
当用作计数器时,外部脉冲信号按引脚T0(P3.4)或T1(P3.5)计数,当输入的外部脉冲信号从1跳到0时,计数器的值自动增加1,计数器的最大频率通常是时钟频率的1/24。
由此可以看出,无论是定时器还是计数器的工作方式,定时器T0和T1都不占用CPU时间,除非定时器/计数器T0和T1溢出,否则它可能导致CPU中断,然后执行中断处理程序,因此定时器/计数器是一种单片机高效、灵活的工作元件。
㈦ 企业使用的存储系统有哪些
推荐使用华录蓝光存储系统。
华录蓝光光盘库具有长寿命、高可靠性、兼容性、低成本、人性化、管理便捷等产品特点非常适用于存储这类低访问频次而具有高重要性”的冷数据(二八定律:在数据被存储后,经常被访问的数据被称为热数据,而极少被访问的数据被称为冷数据)。
中国华录拥有国内唯一一条300G蓝光光盘生产线,在盘材质、制作工艺、质量检测等方面都执行严格的质量标准,保证存储介质的高品质特性。华录蓝光光盘库产品阵容包括:企业级蓝光存储系统DA-BH7010、DA-BH8010、DA-BH9010、小型蓝光光盘库CA-BH10。