鱼C论坛

 找回密码
 立即注册
查看: 1739|回复: 6

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

[复制链接]
发表于 2015-11-7 15:09:34 From FishC Mobile | 显示全部楼层 |阅读模式
5鱼币
如int a=1+2;是怎样在內存中存储的呢?求详细解答!:smile

最佳答案

查看完整内容

楼主你好,我这里就不贴图了,用文字描述,如果不懂可以联系我。 是这样的,在CPU内部也有一些可以存储数据的部件---寄存器,如EAX,EBX等等。 明白了上面说的,我们在来看你说的这条代码“int a=1+2;”。 在这条语句中,CPU的执行顺序是从右到左即先计算1+2,这一过程是在CPU内部进行的,当CPU计算完1+2滞后于就会将结果通过一个叫数据总线部件将结果写入“a”这个变量中去。“a”其实是你为内存地址起的一个代号而已。 这样说 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 [ebx],eax/*将EAX中的结果放进地址为10000H的内存单元中几即变量A中*/
欧猪可否明白,另外这里的汇编代码可能有错误只需要看注释就可以了,有点忘记汇编了。

评分

参与人数 1荣誉 +1 鱼币 +5 贡献 +1 收起 理由
夜礼服 + 1 + 5 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-7 20:02:43 | 显示全部楼层
在内存中声明int类型的存储空间,并把(1+2)的值写入该位置,完成对a的赋值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-7 21:01:57 | 显示全部楼层
在内存中声明int类型的存储空间,并把(1+2)的值写入该位置,完成对a的赋值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-8 14:54:53 | 显示全部楼层
学完汇编就知道了  汇编是挺好的一门理解性强的语言:smile
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-10 10:41:22 | 显示全部楼层
:smile
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 [ebx],eax/*将EAX中的结果放进地址为10000H的内存单元中几即变量A中*/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 14:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表