导航:首页 > 数据分析 > 数据和指令存储在哪里

数据和指令存储在哪里

发布时间:2025-05-21 00:38:19

A. 指令和数据都用二进制代码存放在内存中,从时空观角度回答CPU如何区分读出的代码是指令还是数据。

指令用来确定“做什么”和“怎样做”,数据是“做”的时候需要原始数。

计算机可以从时间和空间两方面来区分指令和数据,在时间上,取指周期从内存中取出的是指令,而执行周期从内存取出或往内存中写入的是数据,在空间上,从内存中取出指令送控制器,而执行周期从内存从取的数据送运算器、往内存写入的数据也是来自于运算器。

比如:要计算机做1+2=?中,“+”表示要做什么和怎样做,1和2则是做的时候需要的原始数。现在假设某CPU中,“+”用二进制“00000001”来表示,“1、2”分别用“00000001、00000010”来表示。那么,这段程序存入内存中就是这样的:
XXXX1:00000001
XXXX2:00000001
XXXX3:00000010 前面的XXXX1 XXXX2
XXXX3表示内存的地址
从上面可以看出,“+”指令和被加数是完全相同的,当然,这是我故意这样假设的,但是,在实际情况中,这种情况是大量存在的。在正常情况下,CPU只能把XXXX1内存中的00000001作为指令,XXXX2内存中的00000001作为被加数才能得到正确的结果。那么CPU如何才能做到不把第二个00000001也当成“+”呢?
1.人们把内存的某个地址规定为起始地址(又称为复位地址),也就是说,当计算机开机或者被强行复位(也就是机箱上那个重启动按钮按下的的时候),CPU立即跳转到这个地址中,并且把它里面的代码作为指令来执行,同时根据这个指令的长度和格式判断下一条指令在什么地方。
对于X86系列CPU(也就是现在人们常用的什么奔XX、赛XX系列),它的复位地址是FFFF0,如果表示成逻辑地址则是:FFFF:0000。对DEBUG比较熟悉的朋友或者会在一些高级语言中嵌入汇编语言的朋友可以这样做一个试验:
用DEBUG执行一条指令(这是一条无条件跳转指令):jmp
FFFF:0000,或者在高级语言中嵌入这条汇编指令,执行后,你就会发现,计算机重新启动了。其实,用程序控制计算机重启的最本质的操作就是这样的。
2.给各种指令规定了相应的长度和格式。比如:某数+某数这条指令就规定:这条指令的长度是3个字节,其中第一个字节表示“+”,后面两个字节表示被加数和加数。于是,当CPU到达这个指令后,就自动把第一个代码作为指令,后面两个代码作为数据,依次类推,第4个代码就必然是指令.....

B. 指令和数据均存放在内存中,计算机如何从时间和空间上区分它们是指令还是数据

1.数据区分两种,一种是 栈数据,和堆数据。

2.而全局变量和静态变量和常量字符串放在文本区或者叫全局区,

3.并在文本区的隔壁还有一个是指令区,专门放指令

他们分别有一个段基址寄存器指向他们的。所以怎么之别是不需要你来关心的,是由操作系统和进程tcb块来管理。

阅读全文

与数据和指令存储在哪里相关的资料

热点内容
华硕win10误删c盘文件 浏览:773
红米5旧手机数据如何导入新手机 浏览:313
文件所在扇区 浏览:340
游戏怎么安装压缩文件 浏览:517
win10系统装数据库如何设置 浏览:390
手机里qmgp文件删除 浏览:963
便携式编程用什么电脑 浏览:6
天涯明月刀最快升级攻略 浏览:941
微信聊天群找不到了 浏览:147
淘宝情趣模板代码 浏览:355
vs加入文件夹 浏览:23
rap文件在哪里打开 浏览:675
编程说话怎么样 浏览:754
win10推送文件夹 浏览:768
如何把手机app的数据存到内存卡里 浏览:200
小狗阅读下载的文件在哪里 浏览:397
小火箭幼儿编程体验课怎么报名 浏览:601
论文中编程程序查重吗 浏览:117
导航dsa数据怎么来的 浏览:594
手机腾迅文件下载到u盘 浏览:260

友情链接