夜礼服 发表于 2015-11-7 15:09:34

计算机在內存中怎样存储变量

如int a=1+2;是怎样在內存中存储的呢?求详细解答!:smile

老师 发表于 2015-11-7 15:09:35

楼主你好,我这里就不贴图了,用文字描述,如果不懂可以联系我。
是这样的,在CPU内部也有一些可以存储数据的部件---寄存器,如EAX,EBX等等。
明白了上面说的,我们在来看你说的这条代码“int a=1+2;”。
在这条语句中,CPU的执行顺序是从右到左即先计算1+2,这一过程是在CPU内部进行的,当CPU计算完1+2滞后于就会将结果通过一个叫数据总线部件将结果写入“a”这个变量中去。“a”其实是你为内存地址起的一个代号而已。
这样说不知道你能不能明白。用汇编解释如下:
假设变量a的地址为100000H,则过程为
mov eax,1/*将1放进EAX中*/
mov edx,2/*将2放进EDX中*/
mov ebx,10000/*将变量A的地址放进EBX中*/
add eax,edx/*将EAX和EBX相加并将结果放进EAX中*/
mov ,eax/*将EAX中的结果放进地址为10000H的内存单元中几即变量A中*/
欧猪可否明白,另外这里的汇编代码可能有错误只需要看注释就可以了,有点忘记汇编了。

~风介~ 发表于 2015-11-7 20:02:43

在内存中声明int类型的存储空间,并把(1+2)的值写入该位置,完成对a的赋值。

yuyaya1130 发表于 2015-11-7 21:01:57

在内存中声明int类型的存储空间,并把(1+2)的值写入该位置,完成对a的赋值。

woyaosougou 发表于 2015-11-8 14:54:53

学完汇编就知道了汇编是挺好的一门理解性强的语言:smile

tuishou 发表于 2015-11-10 10:41:22

:smile

tuishou 发表于 2015-11-10 10:44:41

在内存中声明int类型的存储空间,并把(1+2)的值写入该位置,完成对a的赋值
mov eax,1/*将1放进EAX中*/
mov edx,2/*将2放进EDX中*/
mov ebx,10000/*将变量A的地址放进EBX中*/
add eax,edx/*将EAX和EBX相加并将结果放进EAX中*/
mov ,eax/*将EAX中的结果放进地址为10000H的内存单元中几即变量A中*/
页: [1]
查看完整版本: 计算机在內存中怎样存储变量