- 余辉
-
MOV WORD PTR[BX+SI+2]2846。
1、操作数是运算符作用于的实体,是表达式中的一个组成部分,它规定了指令中进行数字运算的量 。表达式是操作数与操作符的组合。
2、操作数地址就是操作数存放在内存的物理地址。
3、操作数指出指令执行的操作所需要数据的来源。操作数是汇编语言指令的一个字段。例如:Mov AX 5678H 操作数(AX 5678H)。在操作数这个字段中可以放操作数本身,也可以放操作地址,还可以放操作地址的计算方法。
相关推荐
内存地址号是什么
内存地址是一种用于软件及硬件等不同层级中的数据概念,用来访问电脑主存中的数据。内存地址有许多类型。换句话说,一个电脑,甚至在一个程序内,可能即存在数个不同的内存“定址空间”。电脑的内存(尤其是指主存)是由许多“内存地址”所组成的,每个内存地址都有一个“物理地址”,能供CPU(或其他设备)访问。一般,只有如BIOS、操作系统及部分特定之公用软件(如内存测试软件)等系统软件。能使用机器码的运算对象或寄存器对物理地址定址,指示CPU要求内存控制器之类的硬件设备,使用内存总线或系统总线,亦或分别之控制总线、地址总线及数据总线,运行该程序之命令。内存控制器的总线是由数条并行的线路所组成的,每条线路表示一个比特。总线的宽度因此依电脑不同,决定了可定址之存储单位数量,以及每一单位内的比特数量。计算机程序使用内存地址来运行机器码、存储及截取数据。大多数的应用程序无法得知实际的物理地址,而是使用电脑的内存管理单元及操作系统的内存映射,为“逻辑地址”或虚拟地址定址。2023-09-09 07:37:081
C语言中什么叫内存地址?
C语言红当你输入比如inta=10;intb=20;当输入scanf接受时以近给变量开辟了空间内存地址一般为16位0-F表示2023-09-09 07:37:242
内存地址范围是怎么计算的?
地址码长度为二进制24位时,其寻址范围是16MB。具体过程如下:2的10次方是1024b,也就是1KB,16M=16*1024*1024,也就是2的24次方,所以24位时就是16MB。当地址码长度为二进制24位的时候,就意味着地址总线可以有2^24种状态,这也意味着存储器的寻址范围是2^24个单元。扩展资料通常人们认为,内存容量越大,处理数据的能力也就越强,但内存容量不可能无限的大,它要受到系统结构、硬件设计、制造成本等多方面因素的制约,一个最直接的因素取决于系统的地址总线的地址寄存器的宽度(位数)。计算机的寻找范围由总线宽度(处理器的地址总线的位数)决定的,也可以理解为cpu寄存器位数,这二者一般是匹配的。2023-09-09 07:37:301
内存地址是什么
内存地址系统 ram 中的特定位置,通常以十六进制的数字表示。在8086的实模式下,把某一段寄存器左移4位,然后与地址ADDR相加后被直接送到内存总线上,这个相加后的地址就是内存单元的物理地址,而程序中的这个地址就叫逻辑地址(或叫虚地址)。在80386的保护模式下,这个逻辑地址不是被直接送到内存总线,而是被送到内存管理单元(MMU)。MMU由一个或一组芯片组成,其功能是把逻辑地址映射为物理地址,即进行地址转换。当使用80386时,我们必须区分以下三种不同的地址:逻辑地址:机器语言指令仍用这种地址指定一个操作数的地址或一条指令的地址。这种寻址方式在Intel的分段结构中表现得尤为具体,它使得MS-DOS或Windows程序员把程序分为若干段。每个逻辑地址都由一个段和偏移量组成。线性地址:线性地址是一个32位的无符号整数,可以表达高达232(4GB)的地址。通常用16进制表示线性地址,其取值范围为0x00000000~0xffffffff。物理地址: 也就是内存单元的实际地址,用于芯片级内存单元寻址。物理地址也由32位无符号整数表示。MMU是一种硬件电路,它包含两个部件,一个是分段部件,一个是分页部件,在本书中,我们把它们分别叫做分段机制和分页机制,以利于从逻辑的角度来理解硬件的实现机制。分段机制把一个逻辑地址转换为线性地址;接着,分页机制把一个线性地址转换为物理地址。2023-09-09 07:37:475
计算机中内存地址为什么要分高低八位?
高八位和低八位:内存里,一个单元是一个字节,也就是8位。如果是16位的指令,就是同时操作连续的2个内存地址,将这连续的2个内存地址当成一个单位,所以就有高8位和低8位之分。由于计算机仅识别二进制描述的数字,所以对一个内存地址,也就是8位二进制,如:0000 0001,0000就是高四位,0001就是低四位。当然2个内存地址,就是16位二进制,也就是:0000 0001 0000 0002。0000 0001 就是高八位,0000 0002就是低八位。每个八位中又分成高低四位。如:1010 0001 1111 0101,换算成16进制就是:1010–10(10进制)—A(16进制),0001–1(10进制)—1(16进制)所以他的高八位就是A1,同样它的低八位就是F5。扩展资料:如何在C语言中的ascII码表里查找高四位、低四位:ascii码在C语言中用char型存储,一个char占一个字节,即8位。当写成二进制表达形式时,就是8个0或者1的数字,这8个数字中,左边四个称为高四位,右边四个称为低四位。所以在查ascii码表时,需要:1、把要查的值,转成二进制值;2、得到高四位值,及低四位值;3、根据高四位值查表,找到所在列;4、根据低四位值查表,找到所在行;5、所在行列的交叉格,就是要查找的字符。2023-09-09 07:38:031
计算机内存地址为什么要用16进制数来表示
在计算机内部,二进制数据转换为 十六进制数据最直接、最快捷,占用存储空间最小。2023-09-09 07:38:174
计算机内存单元的地址一般是多少位???
由操作系统决定的2023-09-09 07:38:345
内存地址(代码)是什么?
内存地址是一个专业计算机术语;通俗地讲就是指内存条中,每一组数值(8位/16位等)的存放位置;打个比方说,就像你把几本书放在书架上,A放在第一排第二格内存地址就是0102;B放在第五排第三格内存地址就是0503。。。。2023-09-09 07:38:521
怎么理解 【内存单元】和【内存地址】
内存单元是计算机存储数据的最小单位,以字节计数计算机在使用存储器时,要给这些存储器进行编号,这个编号就是地址地址最小的就是字节地址但有时数据不是以字节形式进行读写的,比如int型就是连续的4个字节组成,计算机就使用地址附加说明的方式来访问数据,一次读写就是4个字节这些地址连续编号,就形成一整片地址区,地址顺序增大,最小单位是字节,这个连续编号就是所谓线性地址。内存地址就是内存单元的编号,方便访问读写用的。2023-09-09 07:39:011
32位计算机内存地址编码范围
0*的意思是0x,是16进制数表示的前缀,意思是这个数是个16进制数(不然就不会出现F在数字中了对不对亲您说对吧?)2023-09-09 07:39:112
内存地址的地址区分
当使用80386时,我们必须区分以下三种不同的地址:逻辑地址:机器语言指令仍用这种地址指定一个操作数的地址或一条指令的地址。这种寻址方式在Intel的分段结构中表现得尤为具体,它使得MS-DOS或Windows程序员把程序分为若干段。每个逻辑地址都由一个段和偏移量组成。线性地址:线性地址是一个32位的无符号整数,可以表达高达2^32(4GB)的地址。通常用16进制表示线性地址,其取值范围为0x00000000~0xffffffff。物理地址:也就是内存单元的实际地址,用于芯片级内存单元寻址。物理地址也由32位无符号整数表示。2023-09-09 07:39:311
内存中的存储单元的地址结构是几维
内存中的存储单元的地址结构是16位。大部分16位和32位的CPU不允许将字或者长字存储到内存中的任意地址。比如Motorola68000不允许将16位的字存储到奇数地址中,将一个16位的字写到奇数地址将引发异常。每一个单元的地址称为字节地址,任何相邻两个单元组成一个字地址,按编址原则约定用其中一个较小的地址来表示字地址。一个字由两个字节组成,则低字节对应低地址,高字节对应高地址。相关应用:在计算机中,由控制器解释,运算器执行的指令集是一个精心定义的数目十分有限的简单指令集合。一般可以分为四类:1)、数据移动 (如:将一个数值从存储单元A拷贝到存储单元B)。2)、数逻运算(如:计算存储单元A与存储单元B之和,结果返回存储单元C)。3)、 条件验证(如:如果存储单元A内数值为100,则下一条指令地址为存储单元F)。4)、指令序列改易(如:下一条指令地址为存储单元F)。2023-09-09 07:39:461
内存地址怎么表示的?
内存地址在计算机中是用二进制表示的,但是在我们平时的教学、学习、研究中,因为用二进制表示太过繁琐,所以我们取地址的4个一组表示成十六进制,这就是楼主看到的内存地址在书本上没用二进制表示的原因。最后强调一下,内存地址在计算机中的的确确是用二进制表示的。2023-09-09 07:40:071
请问内存地址的编号是怎么进行的?
内存地址有两部分组成,段地址加偏移量的方式。采用16金进制,用0到9 以及ABCDEF。表示。第一个地址往往是:0000:0000,最后一个地址,由于段地址是可变化的,偏移量也是可变化。没固定数字,但是也遵循以上原则。2023-09-09 07:40:191
请教一个问题,如何获得一个变量的内存地址
1、获得函数的地址函数名实际上就是指针,所以可以通过强制类型转换来获取函数的地址。int i = 0;i = (int)main;printf(“%d ”,i);这样我们就获取了main函数的地址了,其他的自定义的函数也是同样的道理啊。2、获取变量地址int variab = 0;int addrvar = 0;addrvar = (int)&variab;在变量addrvar中保存了变量variab的地址。3、获得数组的地址数组本身就是指针,它本身就是内存地址,和获得函数地址的方法一样啊。比如int array[10];int addrarr;addrarr = (int)array;2023-09-09 07:40:281
内存的开始地址和结束地址是?
起始地址是0x00000000--0x08000000(128M内存)0x00000000--0x10000000(256M)--0x20000000(512M--0x40000000(1G)2023-09-09 07:40:361
C语言,地址量与内存地址的区别
两者含义是一致的。比如int a=10;int *p;p=&a;则p指向的内存地址就是a所在位置2023-09-09 07:40:441
内存的地址 和大小的问题 很简单
我也写写我的理解。内存空间大小(容量大小)的单位可以是“字节(Byte,B)”或者“字”。其中一个字的字长(大小)又可以用“字节”做单位。数据以称为“字”的位组的形式在内存中传入和传出(书本原话)。例子:字可以是8位(bit, b),16位,32位,64位,字长分别为1字节(Byte,B)、2字节、4字节、8字节,注:1B=8b。每个字有一个唯一的地址,所有地址构成一个地址空间,地址空间的大小就是地址的总数(即字的总数)。所以,内存空间大小(B)=地址空间大小(字)x字长(B/字),括号内是单位。一般说内存空间是多少多少KB、MB、GB,说的是以字节(B)为单位,可以说是从“数据容量”层面去表达内存空间的大小;如果以“字”为单位,可以说是从“能容纳多少个地址”的层面去表达内存空间的大小。因此,问题所说为什么要用“65KB(应该大写,内存大小常用B做单位,1K=2^10≈10^3),字长为1字节”表示就很好理解了,“65KB”就是内容的大小,是从“数据容量”层面表达的。字长为1字节说明内存中数据传入和传出的大小为1字节(1B/字)。而地址空间的大小=65KB/(1B/字)=65K(字)=(2^6+1)*2^10(字)=66560(字),即66560个地址。如果内存大小是64KB,地址空间大小就是65536个地址,范围从0开始,就是0~65535。我估计应该是64KB,被写错成65KB了吧。。2023-09-09 07:40:554
内存寻址方式具体是指什么?
一、隐含寻址 在指令中不明显的给出而是隐含着操作数的地址。例如,单地址的指令格式,没有在地址字段中指明第二操作数地址,而是规定累加寄存器AC作为第二操作数地址,AC对单地址指令格式来说是隐含地址。二、立即寻址 指令的地址字段指出的不是操作数的地址,而是操作数本身。这种方式的特点是指令执行时间很短,不需要访问内存取数。 例如:单地址的移位指令格式为 OP(移位) F D这里D不是地址,而是一个操作数。F为标志位,当F=1,操作数进行右移;当F=0时,操作数进行左移。三、直接寻址 直接寻址特点是:在指令格式的地址字段中直接指出操作数在内存的地址D。点击演示 采用直接寻址方式时,指令字中的形式地址D就是操作数的有效地址E,既E=D。因此通常把形式地址。 点击演示D又称为直接地址。此时,由寻址模式给予指示。 如果用S表示操作数,那么直接寻址的逻辑表达式为 S=(E)=(D)四、间接寻址 间接寻址的情况下,指令地址字段中的形式地址D不是操作数的真正地址,而是操作数地址的指示器,D单元的内容才是操作数的有效地址。 如果把直接寻址和间接寻址结合起来,指令有如下形式: 操作码 I D 寻址特征位I=0,表示直接寻址,这时有效地址E=D;I=1,表示间接寻址,这时有效地址E=(D)。 间接寻址方式是早期计算机中经常采用的方式,但由于两次访存,影响指令执行速度,现在已不大使用。五、寄存器寻址方式和寄存器间接寻址方式 当操作数不放在内存中,而是放在CPU的通用寄存器中时,可采用寄存器寻址方式。此时指令中给出的操作数地址不是内存的地址单元号,而是通用寄存器的编号。 寄存器间接寻址方式与寄存器寻址方式的区别在于:指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。六、相对寻址方式 相对寻址是把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。程序计数器的内容就是当前指令的地址。“相对”寻址,就是相对于当前的指令地址而言。 点击演示 采用相对寻址方式的好处是程序员无须用指令的绝对地址编程,所编程序可以放在内存任何地方。 此时形式地址D通常称为偏移量,其值可正可负,相对于当前指令地址进行浮动。七、基址寻址方式基址寻址方式是将CPU中基址寄存器的内容加上指令格式中的形式地址而形成操作数的有效地址。点击演示它的优点是可以扩大寻址能力。同形式地址相比,基址寄存器的位数可以设置得很长,从而可以在较大的存储空间中寻址。八、变址寻址方式 变址寻址方式与基址寻址方式计算有效地址的方法很相似,它把CPU中某个变址寄存器的内容与偏移量D相加来形成操作数有效地址。 但使用变址寻址方式的目的不在于扩大寻址空间,而在于实现程序块的规律性变化。九、块寻址方式 块寻址方式经常用在输入输出指令中,以实现外存储器或外围设备同内存之间的数据块传送。块寻址方式在内存中还可用于数据块搬家。 块寻址时,通常在指令中指出数据块的起始地址(首地址)和数据块的长度(字数或字节数)。 如果数据块是变长的,可用三种方法指出它的长度: (1)指令中划出字段指出长度; (2)指令格式中指出数据块的首地址与末地址; (3)由块结束字符指出数据块长度。 操作码 首地址 标志位 末地址十、段寻址方式 微型机中采用了段寻址方式,例如它们可以给定一个20位的地址,从而有1M存储空间的直接寻址能力。为此将整个1M空间存储器以64K为单位划分成若干段。在寻址一个内存具体单元时,由一个基地址再加上某些寄存器提供的16位偏移量来形成实际的20位物理地址。这个基地址就是CPU中的段寄存器。在形成20位物理地址时,段寄存器中的16位数会自动左移4位,然后以16位偏移量相加,即可形成所需的内存地址。2023-09-09 07:41:041
内存64GB,按字节编码或者字编码,求地址范围
字节编址是256M,字编码是8BIT,地址范围是128M。它的寻址范围是128M,而每个内存地址可以存储16bit数据。按字节编址:对于这个256M内存来说,它的寻址范围是256M,而每个内存地址可以存储8bit数据。地址通常是虚拟地址,但文档特别指出了另一种类型的地址。在用户模式下,调试器根据当前进程的页面目录解释虚拟地址。在内核模式下,调试器根据进程上下文指定的进程的页目录解释虚拟地址。还可以直接设置用户模式地址上下文。有关用户模式地址上下文的详细信息。2023-09-09 07:41:231
内存基址是什么?内存中保存的信息是什么
内存里面放的是运行程序的编码要运行那些东西先把硬盘里的数据移动到内存里然后按寻址找到相应程序的内容即基址0X之类的是内存地址来的WINDOSXP是运行在在支持虚拟地址空间的计算机上,虚拟地址空间或者映射到一段真实的物理内存,或者映射到交换文件中的页帧。不同的应用程序可能会操作同一个虚拟地址,但是其对应的物理地址不一定相同,比如进程A和进程B都访问adrs1地址,进程A的地址经过全局表和局部表转换后变为一个指向物理a1内存的地址,而进程B的地址经过全局表和局部表转换后变为一个指向物理b1内存的地址,而且这个地址所在页并不在物理内存中,而是在交换文件中,于是系统就进行内存交换,将相应的页读入进行操作文件偏移也比较好理解,文件开始的第一个字节偏移量为0之后每经过一个字节偏移量就加12023-09-09 07:41:321
怎样从内存地址范围计算内存大小?
直接计算就可以比如内存地址范围是从FF8E0000-FF8EFFFF,则其大小为FF8EFFFF-FF8E0000=FFFF,等于65535,也就是64K.2023-09-09 07:41:411
如果存储器地址空间是16mb.字长为8位,那么存取一个字需要多少位?
24位。8位为一个字节,即字长为1个字节,地址空间16MB=2^24B=2^24字节,字节除以字节得到字,取log2字,得到24位。而且这里应该算的是存储空间,所以上述过程即求存储空间,也就是地址空间的过程,也就是寻址。扩展资料:存储器地址空间:地址空间(address space)表示任何一个计算机实体所占用的内存大小。物理存储器和存储地址空间是两个不同的概念。但是由于这两者有十分密切的关系,而且两者都用B、KB、MB、GB来度量其容量大小,因此容易产生认识上的混淆,弄清这两个不同的概念,有助于进一步认识主存储器和用好主存储器。物理存储器是指实际存在的具体存储器芯片。如主板上装插的主存条和装载有系统的BIOS的ROM芯片,显示卡上的显示RAM芯片和装载显示BIOS的ROM芯片,以及各种适配卡上的RAM芯片和ROM芯片都是物理存储器。存储地址空间是指对存储器编码(编码地址)的范围。所谓编码就是对每一个物理存储单元(一个字节)分配一个号码,通常叫作“编址”。分配一个号码给一个存储单元的目的是为了便于找到它,完成数据的读写,这就是所谓的“寻址”(所以,有人也把地址空间称为寻址空间)。CPU在操控物理存储器的时候,把物理存储器都当作内存来对待,把它们总的看作一个由若干存储单元组成的逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间。有的物理存储器被看作一个由若干存储单元组成的逻辑存储器,每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间。CPU在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据。地址空间的大小和物理存储器的大小并不一定相等。举个例子来说明这个问题:某层楼共有17个房间,其编号为801~817。这17个房间是物理的,而其地址空间采用了三位编码,其范围是800~899共100个地址,可见地址空间是大于实际房间数量的。对于386以上档次的微机,其地址总线为32位,因此地址空间可达2的32次方,即4GB。但实际上我们所配置的物理存储器通常只有1MB、2MB、4MB、8MB、16MB、32MB等,远小于地址空间所允许的范围。参考资料来源:百度百科—地址空间2023-09-09 07:42:261
究竟什么是内存高地址什么是内存低地址~
字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端、大端两种字节顺序。小端字节序指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处;大端字节序是高字节数据存放在低地址处,低字节数据存放在高地址处。基于X86平台的PC机是小端字节序的,而有的嵌入式平台则是大端字节序的。因而对int、uint16、uint32等多于1字节类型的数据,在这些嵌入式平台上应该变换其存储顺序。通常我们认为,在空中传输的字节的顺序即网络字节序为标准顺序,考虑到与协议的一致以及与同类其它平台产品的互通,在程序中发数据包时,将主机字节序转换为网络字节序,收数据包处将网络字节序转换为主机字节序2023-09-09 07:42:462
地址总线和内存的计算关系
地址总线是这样的:一根地址线,代表一个bit位,n位宽度的地址总线可寻址范围是2的n次方个地址。比如:若只有一根地址总线,那么可以索引地址0、地址1的两个内存地址。若有两根地址总线,那么可以索引2^2=4个内存地址:00、01、10、11以此类推,32位地址总线,能够索引2的32次方个地址,即4G内存地址空间。然后再说这个电脑的位数,电脑的位数通常是指CPU的处理位数,这个不是靠地址总线来决定的,这个位数指的是CPU 通用寄存器的数据宽度,即CPU一次运算可以处理的数据bit长度2023-09-09 07:42:551
1M内存的地址编号是 从00000 H到FFFFF H 吗? 为什么 ,怎么算的啊?
1M=1024*1024=1048576(10进制) FFFFF(16进制)=15*16^4+15*16^3+15*16^2+15*16+15=1048575(10进制),所以从00000H到FFFFFH刚好1M2023-09-09 07:43:041
计算机内存地址怎么求呀???
H表示这是用16进制表示的,两地址间的差距即为空间大小,用大的减小的再加一。2001H-7000H:7000H-2001H+1H=5000H,所以空间为20480Byte=20KB(将5000H转换为十进制可得),或者直接用5000H除于400H=14H (KB)=20KB同理得4FFFH-1000H+1H=4000H,空间为16384Byte=16KB16K可以存储汉字为8K个,即8192个(每个汉字占2个字节)2023-09-09 07:43:281
8086从偶地址访问内存一个字时需占用____周期,而从奇地址访问内存一个字操作需占用____周期
1,22023-09-09 07:43:502
内存地址是怎么被表示的
如你所说,内存地址就是用这样的格式来表示的。 首先 0x是表示后面的数字是十六进制的 其次 后面的8位数就是用十六进制来表示内存地址希望回答对你有帮助。2023-09-09 07:44:131
0x10042750指令引用的0x10042750用人的内存,该内存不能为written.要终止程序,请单击确定
0x10042750这块内存不能写,应该是软件和操作系统的冲突。把新安装的软件卸载了,重启电脑。2023-09-09 07:44:245
用c语言如何获取内存地址?
printf("%p",a) 输出a代表的地址2023-09-09 07:44:456
0x7eae3e5f指令引用的0x80070057内存.该内存不能为read
重装系统吧,不然就看下面的内存不能为read或written的解决方案该内存不能为read或written的解决方案 使用Windows操作系统的人有时会遇到这样的错误信息:「“0X????????”指令引用的“0x00000000”内存,该内存不能为“read”或“written”」,然后应用程序被关闭。如果去请教一些「高手」,得到的回答往往是「Windows就是这样不稳定」之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的一般原因。一、应用程序没有检查内存分配失败程序需要一块内存用以储存数据时,就需要使用操作系统提供的「功能函数」来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是「动态内存分配」,内存地址也就是编程中的「光标」。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值「0」已不表示新启用的游标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的「健壮性」。若应用程序没有检查这个错误,它就会按照「思维惯性」认为这个值是给它分配的可用游标,继续在之后的执行中使用这块内存。真正的0地址内存区储存的是计算机系统中最重要的「中断描述符表」,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即当机,而在健壮的操作系统中,如 Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的「写内存」错误,并指出被引用的内存地址为「0x00000000」。内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中「安装」的病毒程序),更改了大量的系统参数和系统档案之后。二、应用程序由于自身BUG引用了不正常的内存光标在使用动态分配的应用程序中,有时会有这样的情况出现:程序试突读写一块「应该可用」的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是「忘记了」向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而「没有留意」等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图「违法」的程序唯一的下场就是被操作终止执行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效光标不一定总是0,因此错误提示中的内存地址也不一定为「0x00000000」,而是其它随机数字。如果系统经常有所提到的错误提示,下面的建议可能会有说明 :1.检视系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。2.更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统档案、修正系统参数。有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。3.试用新版本的应用程序。Mode:将虚拟内存撤换答案:目前为止是肯定的,也就是如在下次冷天到来时亦没再发生,就代表这是主因追加:如果你用 Ghost 恢复 OS 后建议 删除WINDOWS\PREFETCH目录下所有*.PF文件因为需让windows重新收集程序的物理地址有些应用程序错误 "0x7cd64998" 指令参考的 "0x14c96730" 内存。该内存不能为 "read"推论是此原因源由:Win XP的「预读取」技术这种最佳化技术也被用到了应用软件上,系统对每一个应用软件的前几次启动情况进行分析,然后新增一个描述套用需求的虚拟「内存映像」,并把这些信息储存到 WINDOWSPREFETCH数据夹。一旦建立了映像,应用软件的装入速度大大提高。XP的预读取数据储存了最近8次系统启动或应用软件启动的信息。后叙:目前此方法亦是独步网络的(其码自己针对此问题查了许久),也是常见问题,原本几乎每天睡前关闭软件时一些程序都会发生...read...现在就没发生了。【文章二】运行某些程序的时候,有时会出现内存错误的提示(0x后面内容有可能不一样),然后该程序就关闭。 “0x????????”指令引用的“0x????????”内存。该内存不能为“read”。 “0x????????”指令引用的“0x????????”内存,该内存不能为“written”。 不知你出现过类似这样的故障吗? 一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。 下面先说说硬件: 一般来说,内存出现问题的可能性并不大,主要方面是:内存条坏了、内存质量有问题,还有就是2个不同牌子不同容量的内存混插,也比较容易出现不兼容的情况,同时还要注意散热问题,特别是超频后。你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。 假如你是双内存,而且是不同品牌的内存条混插或者买了二手内存时,出现这个问题,这时,你就要检查是不是内存出问题了或者和其它硬件不兼容。 如果都没有,那就从软件方面排除故障了。 先简单说说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在其一位置时,因为没有足够空间,就会发生溢出现象。举个例子:一个桶子只能将一斤的水,当你放入两斤的水进入时,就会溢出来。而系统则是在屏幕上表现出来。这个问题,经常出现在windows2000和XP系统上,Windows 2000/XP对硬件的要求是很苛刻的,一旦遇到资源死锁、溢出或者类似Windows 98里的非法操作,系统为保持稳定,就会出现上述情况。另外也可能是硬件设备之间的兼容性不好造成的。 下面我从几个例子给大家分析: 例一:打开IE浏览器或者没过几分钟就会出现"0x70dcf39f"指令引用的"0x00000000"内存。该内存不能为“read”。要终止程序,请单击“确定”的信息框,单击“确定”后,又出现“发生内部错误,您正在使用的其中一个窗口即将关闭”的信息框,关闭该提示信息后,IE浏览器也被关闭。解决方法:修复或升级IE浏览器,同时打上补丁。看过其中一个修复方法是,Win2000自升级,也就是Win2000升级到Win2000,其实这种方法也就是把系统还原到系统初始的状态下。比如你的IE升级到了6.0,自升级后,会被IE5.0代替。 例二:在windows xp下双击光盘里面的“AutoRun.exe”文件,显示“0x77f745cc”指令引用的“0x00000078”内存。该内存不能为 “written”,要终止程序,请单击“确定”,而在Windows 98里运行却正常。解决方法:这可能是系统的兼容性问题,winXP的系统,右键“AutoRun.exe”文件,属性,兼容性,把“用兼容模式运行这个程序”项选择上,并选择“Windows 98/Me”。win2000如果打了SP的补丁后,只要开始,运行,输入:regsvr32 c:winntapppatchslayerui.dll。右键,属性,也会出现兼容性的选项。 例三:RealOne Gold关闭时出现错误,以前一直使用正常,最近却在每次关闭时出现“0xffffffff”指令引用的“0xffffffff”内存。该内存不能为 “read” 的提示。解决方法:当使用的输入法为微软拼音输入法2003,并且隐藏语言栏时(不隐藏时没问题)关闭RealOne就会出现这个问题,因此在关闭RealOne 之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。 例四:我的豪杰超级解霸自从上网后就不能播放了,每次都提示 “0x060692f6”(每次变化)指令引用的“0xff000011”内存不能为“read”,终止程序请按确定。解决方法:试试重装豪杰超级解霸,如果重装后还会,到官方网站下载相应版本的补丁试试。还不行,只好换就用别的播放器试试了。 例五:双击一个游戏的快捷方式,“0x77f5cd0”指令引用“0xffffffff”内 存,该内存不能为“read” ,并且提示Client.dat程序错误。 解决方法:重装显卡的最新驱动程序,然后下载并且安装DirectX9.0。 例六:一个朋友发信息过来,我的电脑便出现了错误信息:“0x772b548f”指令引用的“0x00303033”内存,该内存不能为 “written”,然后QQ自动下线,而再打开QQ,发现了他发过来的十几条的信息。解决方法:这是对方利用QQ的BUG,发送特殊的代码,做QQ出错,只要打上补丁或升级到最新版本,就没事了。【原因 解决方法】1 内存条坏了 更换内存条2 双内存不兼容 使用同品牌的内存或只要一条内存3 内存质量问题 更换内存条4 散热问题 加强机箱内部的散热5 内存和主板没插好或其他硬件不兼容 重插内存或换个插槽6 硬件有问题 更换硬盘7 驱动问题 重装驱动,如果是新系统,应先安装主板驱动8 软件损坏 重装软件9 软件有BUG 打补丁或更新到最新版本10 软件和系统不兼容 给软件打上补丁或是试试系统的兼容模式11 软件和软件之间有冲突 如果最近安装了什么新软件,卸载了试试12 软件要使用其他相关的软件有问题 重装相关软件,比如播放某一格式的文件时出错,可能是这个文件的解码器有问题13 病毒问题 杀毒14 杀毒软件与系统或软件相冲突 由于杀毒软件是进入底层监控系统的,可能与一些软件相冲突,卸载试试15 系统本身有问题 有时候操作系统本身也会有BUG,要注意安装官方发行的更新程序,象SP的补丁,最好打上.如果还不行,重装系统,或更换其他版本的系统。〔又一说〕在控制面板的添加/删除程序中看看你是否安装了微软NET.Framework,如果已经安装了,可以考虑卸载它,当然如果你以后在其它程序需要NET.Framework时候,可以再重新安装。另外,如果你用的是ATI显卡并且你用的是SP2的补丁(一些ATI的显卡驱动需要在NET.Framework正常工作的环境下)。这种情况你可以找一款不需要NET.Framework支持的ATI显卡驱动。如果以上两种方法并不能完全解决问题,你试着用一下“IE修复”软件,并可以查查是否有病毒之类的。〔微软NET.Framework升级到1.1版应该没问题了〕〔还有一说〕方法一:微软新闻组的朋友指点:开始--运行:regsvr32 jscript.dll开始--运行:regsvr32 vbscript.dll不过没解决---但提供了路子-----一次运行注册所有dll搜索查找到方法如下:运行 输入cmd 回车在命令提示符下输入for %1 in (%windir%system32*.dll) do regsvr32.exe /s %1这个命令老兄你慢慢输 输入正确的话会看到飞快地滚屏 否则……否则失败就是没这效果。回车后慢慢等(需要点时间1-2分钟) 都运行完再打开看方法二:这是个典型问题~~~~~引起这个问题的原因很多。一般来讲就是给系统打上补丁和更换内存、给内存换个插槽这3种方法来解决。[系统补丁只要到Microsoft Update网站在线更新就可以了](偶见)造成这种问题的原因很多,不能单纯的下结论,尽量做到以下几点可能对你有帮助:1。确保使用的是未修改过的软件(非汉化、破解版)2。使用改软件时尽量不要运行其他软件。(这是个临时文件,可能某些软件也在使用临时文件夹,所以产生干扰)3。把那些什么桌面工具,内存整理工具通通关掉(你至少有2个类似的工具在运行)”处理方法:运行regedit进入注册表, 在HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerShellExecuteHooks 下,应该只有一个正常的键值"{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 将其他的删除。〔我个人的最后解决和看法〕我今天尝试了多种办法,最后我发现问题出在微软的NET.Framework上面。我升级了这个软件,并打齐了补丁,短暂平安后,有出现“内存不能为read”的情况。后来我受上面文章的启发,卸载了微软的NET.Framework1.0和1.1,世界太平了。另外:如果是打开“我的电脑”、“我的文档”等的时候出现上述情况,还有一种可能,就是你的右键菜单太臃肿了,此时只要清理右键菜单问题就解决了。--------------------------------------------------------------------------------〔试验的结果〕上面的方法,最管用、最彻底的方法是这个:运行 输入cmd 回车在命令提示符下输入for %1 in (%windir%system32*.dll) do regsvr32.exe /s %1【技巧】如果怕输入错误的话,可以复制这条指令,然后在命令提示框点击左上角的c:,使用下面的“编辑-粘贴”功能就不容易输错了。在飞速滚屏完全静止之后,别着急启动其他程序,先耐心等一会儿,因为此时dll们还在找位置。直到你的指示灯不闪了再做别的。2023-09-09 07:45:232
“计算机的内存是按字节来进行编址的”这句话是什么意思?内存指的是什么?
内存也就是常说的内存条,也就是DRAM芯片如下图:计算机的内存是按字节来进行编址的这句话理解为:内存是按字节编址,每个地址的存储单元可以存放8bit的数据。我们也知道CPU通过内存地址获取一条指令和数据,而他们存在存储单元中。现在就有一个问题。我们的数据和指令不可能刚好是8bit,如果小于8位,没什么问题,顶多是浪费几位(或许按字节编址是为了节省内存空间考虑)。但是当数据或指令的长度大于8bit呢?因为这种情况是很容易出现的,比如一个16bit的Int数据在内存是如何存储的呢?其实一个简单的办法就是使用多个存储单元来存放数据或指令。比如Int16使用2个内存单元,而Int32使用4个内存单元。当读取数据时,一次读取多个内存单元。大端和小端存储Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。2023-09-09 07:45:334
内存地址 c语言
不会的2023-09-09 07:45:414
内存地址(代码)是什么?
系统 ram 中的特定位置,通常以十六进制的数字表示。 在8086的实模式下,把某一段寄存器左移4位,然后与地址ADDR相加后被直接送到内存总线上,这个相加后的地址就是内存单元的物理地址,而程序中的这个地址就叫逻辑地址(或叫虚地址)。在80386的保护模式下,这个逻辑地址不是被直接送到内存总线,而是被送到内存管理单元(MMU)。MMU由一个或一组芯片组成,其功能是把逻辑地址映射为物理地址,即进行地址转换。 当使用80386时,我们必须区分以下三种不同的地址: 逻辑地址: 机器语言指令仍用这种地址指定一个操作数的地址或一条指令的地址。这种寻址方式在Intel的分段结构中表现得尤为具体,它使得MS-DOS或Windows程序员把程序分为若干段。每个逻辑地址都由一个段和偏移量组成。 线性地址: 线性地址是一个32位的无符号整数,可以表达高达232(4GB)的地址。通常用16进制表示线性地址,其取值范围为0x00000000~0xffffffff。 物理地址: 也就是内存单元的实际地址,用于芯片级内存单元寻址。物理地址也由32位无符号整数表示。 MMU是一种硬件电路,它包含两个部件,一个是分段部件,一个是分页部件,在本书中,我们把它们分别叫做分段机制和分页机制,以利于从逻辑的角度来理解硬件的实现机制。分段机制把一个逻辑地址转换为线性地址;接着,分页机制把一个线性地址转换为物理地址2023-09-09 07:46:191
内存地址的实质是什么?
是这样,内存地址是由段地址和偏移地址组成的。Cpu管理内存是分段管理的,偏移地址就是距段首址的位移量,段地址存在cpu的段寄存器中,而偏移地址放在Cpu里的其它寄存器中。当Cpu调用内存某个数据时就会从内部寄存里寻找该内存内容的段地址和偏移地址,也就是它的物理地址,这个过程就是寻址。2023-09-09 07:46:272
计算机内存单元的地址一般是多少位???
由操作系统决定的2023-09-09 07:46:375
内存寻址方式具体是指什么?
一、隐含寻址 在指令中不明显的给出而是隐含着操作数的地址。例如,单地址的指令格式,没有在地址字段中指明第二操作数地址,而是规定累加寄存器AC作为第二操作数地址,AC对单地址指令格式来说是隐含地址。二、立即寻址 指令的地址字段指出的不是操作数的地址,而是操作数本身。这种方式的特点是指令执行时间很短,不需要访问内存取数。 例如:单地址的移位指令格式为 OP(移位) F D这里D不是地址,而是一个操作数。F为标志位,当F=1,操作数进行右移;当F=0时,操作数进行左移。三、直接寻址 直接寻址特点是:在指令格式的地址字段中直接指出操作数在内存的地址D。点击演示 采用直接寻址方式时,指令字中的形式地址D就是操作数的有效地址E,既E=D。因此通常把形式地址。 点击演示D又称为直接地址。此时,由寻址模式给予指示。 如果用S表示操作数,那么直接寻址的逻辑表达式为 S=(E)=(D)四、间接寻址 间接寻址的情况下,指令地址字段中的形式地址D不是操作数的真正地址,而是操作数地址的指示器,D单元的内容才是操作数的有效地址。 如果把直接寻址和间接寻址结合起来,指令有如下形式: 操作码 I D 寻址特征位I=0,表示直接寻址,这时有效地址E=D;I=1,表示间接寻址,这时有效地址E=(D)。 间接寻址方式是早期计算机中经常采用的方式,但由于两次访存,影响指令执行速度,现在已不大使用。五、寄存器寻址方式和寄存器间接寻址方式 当操作数不放在内存中,而是放在CPU的通用寄存器中时,可采用寄存器寻址方式。此时指令中给出的操作数地址不是内存的地址单元号,而是通用寄存器的编号。 寄存器间接寻址方式与寄存器寻址方式的区别在于:指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。六、相对寻址方式 相对寻址是把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。程序计数器的内容就是当前指令的地址。“相对”寻址,就是相对于当前的指令地址而言。 点击演示 采用相对寻址方式的好处是程序员无须用指令的绝对地址编程,所编程序可以放在内存任何地方。 此时形式地址D通常称为偏移量,其值可正可负,相对于当前指令地址进行浮动。七、基址寻址方式基址寻址方式是将CPU中基址寄存器的内容加上指令格式中的形式地址而形成操作数的有效地址。点击演示它的优点是可以扩大寻址能力。同形式地址相比,基址寄存器的位数可以设置得很长,从而可以在较大的存储空间中寻址。八、变址寻址方式 变址寻址方式与基址寻址方式计算有效地址的方法很相似,它把CPU中某个变址寄存器的内容与偏移量D相加来形成操作数有效地址。 但使用变址寻址方式的目的不在于扩大寻址空间,而在于实现程序块的规律性变化。九、块寻址方式 块寻址方式经常用在输入输出指令中,以实现外存储器或外围设备同内存之间的数据块传送。块寻址方式在内存中还可用于数据块搬家。 块寻址时,通常在指令中指出数据块的起始地址(首地址)和数据块的长度(字数或字节数)。 如果数据块是变长的,可用三种方法指出它的长度: (1)指令中划出字段指出长度; (2)指令格式中指出数据块的首地址与末地址; (3)由块结束字符指出数据块长度。 操作码 首地址 标志位 末地址十、段寻址方式 微型机中采用了段寻址方式,例如它们可以给定一个20位的地址,从而有1M存储空间的直接寻址能力。为此将整个1M空间存储器以64K为单位划分成若干段。在寻址一个内存具体单元时,由一个基地址再加上某些寄存器提供的16位偏移量来形成实际的20位物理地址。这个基地址就是CPU中的段寄存器。在形成20位物理地址时,段寄存器中的16位数会自动左移4位,然后以16位偏移量相加,即可形成所需的内存地址。2023-09-09 07:46:551
地址总线和内存的计算关系
地址总线是这样的:一根地址线,代表一个bit位,n位宽度的地址总线可寻址范围是2的n次方个地址。比如:若只有一根地址总线,那么可以索引地址0、地址1的两个内存地址。若有两根地址总线,那么可以索引2^2=4个内存地址:00、01、10、11以此类推,32位地址总线,能够索引2的32次方个地址,即4G内存地址空间。然后再说这个电脑的位数,电脑的位数通常是指CPU的处理位数,这个不是靠地址总线来决定的,这个位数指的是CPU通用寄存器的数据宽度,即CPU一次运算可以处理的数据bit长度2023-09-09 07:47:051
内存地址的计算
好难哦,不会算2023-09-09 07:47:153
怎么根据内存地址查程序所在位置
1、首先确定页目录基址。2、其次定位页目录项。3、最后定位页表项,即可确定地址。2023-09-09 07:47:211
若一个系统内存有64MB,处理器是32位地址,则它的虚拟地址空间为多少字节?
处理器是32位的,所以处理器的寻址能力为2的32次方,由寻址能力可知,虚拟地址空间为2的32次方字节=4GB2023-09-09 07:47:321
0x2c2c2c 错误 内存不能为read
建议你重组下C盘系统。。一切都可以解决。2023-09-09 07:48:073
0x10004397指令引用的0x323336c69内存.该内存不能为read
软件故障!!!!0x10004397表示指令的内存地址,该地址是16进制地址编码,可以判断你装的是32位操作系统,而且是外部指令读取错误。怀疑中了木马,建议利用360安全卫士杀木马,并清理恶意插件,再整理启动项状态,把陌生的全删了,瞧瞧行不行?如果不行,还可以通过360的修复浏览器瞧瞧。如果还不行,还不如重装个系统来得安逸。2023-09-09 07:48:274
究竟什么是内存高地址什么是内存低地址?
字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端、大端两种字节顺序。小端字节序指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处;大端字节序是高字节数据存放在低地址处,低字节数据存放在高地址处。基于X86平台的PC机是小端字节序的,而有的嵌入式平台则是大端字节序的。因而对int、uint16、uint32等多于1字节类型的数据,在这些嵌入式平台上应该变换其存储顺序。通常我们认为,在空中传输的字节的顺序即网络字节序为标准顺序,考虑到与协议的一致以及与同类其它平台产品的互通,在程序中发数据包时,将主机字节序转换为网络字节序,收数据包处将网络字节序转换为主机字节序2023-09-09 07:48:351
C语言中的内存地址和存储单元是什么概念?
假定内存是由好多个方格组成(每个方格代表1位),当你定义了一个变量的时候,他会在内存空闲区域占一个区域(标示被占用,别人不能动了)。至于占多少个格,要受到你定义的变量类型影响。比如int型占用2字节就是8位,也就是8格,你变量的名字连接着这几个格子的第一个格子的位置。引用的时候直接找第一个格子位置,然后取对应类型所需的格子。2023-09-09 07:48:453
内存地址表示多少个字节区域
视CPU寻址能力和操作系统是否32/64位而定,32位系统,用4字节表示内存地址,最多寻址4GB;64位系统,用8字节表示内存地址,最多寻址2^64字节2023-09-09 07:49:101
显存地址与内存地址是什么关系
显存缓存处理GPU信息的内存是处理CPU信息的他并没有什么直接关系2023-09-09 07:49:202
内存地址是什么?可以把它理解成为是一个数据吗?
每一个内存都有他的地址,简单理解成位置,并不是以个数据内存看作房间,内存地址看作门牌号。指针来寻找。2023-09-09 07:49:271
0*0000000指令引用的0*0000000内存.该内存不能为 read
囧,LZ的电脑被黑啦···2023-09-09 07:49:386