码迷,mamicode.com
首页 > 其他好文 > 详细

先存储,后计算

时间:2014-05-01 07:25:27      阅读:342      评论:0      收藏:0      [点我收藏+]

标签:com   http   style   blog   img   c   log   t   size   sp   ext   

存储器读取

  如果要让计算器自动取数,然后计算:10+5+7+2+6。我们先把要加的数都写入存储器,然后再一个一个取出来相加。如果没有特殊的原因,所有的二进制数都应该从存储器的顶端,也就是地址0000开始一个挨着一个存放。

mamicode.com,码迷

  如下图,假设存储器里已经存放了我们要加起来的5个二进制数;

  AC是计数器,用以提供访问存储器的地址,所以称为地址计数器。一开始它的内容时0000,每按一次KAC,它就在原来的基础上自动加一,以得到访问下一个存储器单元所需要的地址;

  AR是一个寄存器,用来临时存放存储器地址,称为地址寄存器。看起来AR有些多余,似乎用AC给存储器提供地址更直接。但是你很快就会发现,不把计数器AC直接和存储器相连,而是由AR负责转交是非常有道理的。

  KRD的作用是给存储器发送命令,要求它将数据送出。注意存储器的W端没有使用,因为我们现在只是要读,所以将它悬空,让它一直为0。

  数据寄存器DR永远暂存读出的数据。

mamicode.com,码迷

  在介绍存储器取数过程前,先把地址计数器AC清零,以指向地址0000,然后执行下面的操作:

  (1)按下KAR,地址计数器AC当前的值0000被AR锁存,并提供给存储器。

  (2)先按住KRD,不要松开,再按一下KDR;这时,数据送出,并被DR保存;最后,松开KRD;

  (3)按一下KAC,地址计数器加一以指向下一个地址,为再次从存储器里读数据做准备。

  至此,存储器里的第一个数就被取出来了。如果要接着取第二个数、第三个数,重复上面的三个操作步骤即可。

半自动化

  我们得目标是用机器计算一连串的加法:10+5+7+2+6,我们想通过存储器把所有要相加的数都提前保存起来,然后,我们什么也不公,就坐在那里看机器中地把它们取出来相加。现在,存储器和加法器可以合在一起,以实现从存储器里不断取数、然后相加的功能。

  冯洛伊曼认为,存储器里不但要有纯粹的数字,还应当有一些指示如何加工这些数字的指令。在《计算机与人脑》这本书里,他写到:”一条指令,在物理意义上和一个数是相同的。“换句话说,它们躺在存储器里,很像普通的二进制数,但实际上不是。

   如下图,所有的指令都以一个操作码开始,它指示出该指令的功能。比如,可以用10001表示”装载“,用10010表示”相加“。

  mamicode.com,码迷

  除此之外,操作码还隐含了一些别的意思。比如装载指令,往哪里装载呢?而且,装载谁能?这个数字在哪里?相应的,相加指令的操作码10010则隐含了更多的意思。首先,它指出,第一个相加的数字位于寄存器RA;第二个相加的数字位于下一个存储单元;最后,相加的结果还要保存在寄存器RA里。

  mamicode.com,码迷

全自动化

 

 

 

 

先存储,后计算,码迷,mamicode.com

先存储,后计算

标签:com   http   style   blog   img   c   log   t   size   sp   ext   

原文地址:http://www.cnblogs.com/zhongxinWang/p/3701721.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!