微计算机(简称微机)的工作过程很复杂,要回答这个问题,首先要从计算机的特点讲起。大家知道,在计算机中常常提到硬件和软件这两个词,这是任何一台计算机要完成任务所不可缺少两个部分。通常所说的硬件,是指组成微机的各种物理设备,如键盘显示器,电源、各种中、大规模集成电路芯片(外型见图1)以及它们之间的连接线等等。但只有硬件,微机什么事也不能干,故人们将微机的硬件系统称之为裸机。一台微机要真正发挥作用,还要靠大量的软件与硬件配合才行。所谓软件,是指一系列微机指令及数据的集合。计算机本身没有思维能力,它只是机械地高速执行人们事先编制好的程序去完成某项任务。

微机与大家所熟悉的普通计算器的一个显著不同点在于其内部有大量的存储器(Memory)。它使计算机具有记忆能力。人们让微机做各种工作的指令全都事先存入微机的存储器中,然后再发出“执行”的命令,这时微机就自动地从存储器中一条一条地取出指令,并执行这些指令。所以说微机的工作过程,就是在硬件设备的基础上,从机内存储器中“取出指令”、“阅读指令”、“执行指令”的过程,这个过程周而复始地进行,直到执行完程序的所有指令。简言之,“取指(令)”,“阅读(指令)”,“执行(指令)”是微机工作过程的三步曲。
一 存储器的结构
前面已经提到,微机中的存储器是用来存放指令与数据的,它们大多数是半导体存储器,外形与图1所示的集成电路相仿。其电路符号如图2所示。从符号看,它的接线端子可分为三组。一组是8根数据线D\(_{0}\)~D7,一组是10根地址线A\(_{0}\)9,还有两根控制线CS及R/W-,前者称为“片选线”后者称为读写线,其功能后面再谈。

为了便于理解,可以将图2所示的存储器形象地比喻为一座具有许多房间的高层旅馆大楼,如图3所示。这座大楼有256层,每层有4个小房间,它们的房间号码排列如图3所示。每一个房间称为一个存储单元,房间的号码就是存储器的地址。在每个房间中,可以放一个8位二进制数,这个二进制数叫该房间(存储单元)的内容。示意图见图4。图4中格子线左边的数字表示存储单元的地址,其对应的格子线中的数字就是该存储单元的内容。


这座大楼里共有4×256=1024个房间,或称有1024个存储单元。书写时,常常写成2\(^{1}\)0=1024这是因为用十根地址线的不同电位高低,可以排列出1024个不同状态来。换言之,用十位二进制数可以对应这座大楼中每个房间的编号,而不重复。

现在谈谈存储器的工作过程。在图3的旅馆大楼里,有十根地址线专门用来控制房间的开门与关门。另外有八根数据线专门用来传送每个房间的货物(即八位二进制数)。至于将货物存入某一房间,还是取走,则由R/W-线(读/写线)来控制。当R/W-为高电子(读数状态)时表示指挥中心(图3一侧有一个指挥中心,它相当于微机中专发指令的部件,后面细讲)要看一看某房间的货物有多少,这个信息通过数据线送回到指挥中心,这时数据传送方向是从大楼向外的。反之,若R/W-为低电平时(写数状态)时,表示指挥中心要将某些货物通过数据线送往大楼中某房间存起来。一但新的货物(数据)送入某房间,房间内原来存放的货物(数据)就自然冲掉了。这时数据传送方向是由外部向大楼内的。最后还有一根片选线CS,它是由指挥中心通往大楼的收发室。因为在一台微机中,存储单元远远不止1024个,换言之,指挥中心常常通过图5那样的译码器(相当于电话总机)控制4座(或更多座)同样的旅馆大楼,例如将高位地址线A\(_{11}\)10接到译码器输入端AB(分别如图3及图5所示),译码器输出端Y\(_{0}\)~Y3分别接四座图3那种大楼的收发室(即片选端CS上)由A\(_{11}\)10的电平高低变化选中0~3号大楼中任何一座(见表1所示)。

现在以读数为列,说明存储器的工作步骤。1.指挥中心对地址线发出这样的电平:
A\(_{11}\)A10A\(_{9}\)A8A\(_{7}\)A6A\(_{5}\)A4A\(_{3}\)A2A\(_{1}\)A0
1 1表示要对0号大楼的第三号房间进行访问,A\(_{11}\)A10电平状态经过译码器后,用CS线通知0号大楼收发室,法意:①指挥中心要对本大楼房间进行访问,并让收发室将本大楼院门打开,以便让低位地址线A\(_{9}\)0及数据线D\(_{7}\)~D0的信息能够进出。这样一来地址线A\(_{9}\)0的信息便得以进入0号大楼,并将3号房间的大门打开。②指挥中心对读写线R/W-发出一个高电平信号,通知0号大楼收发室,这次访问是要查一下第3号房间内的货物(数据值)有多少。③查询完毕。将读取的数值信息放在数据线上,送回指挥中心。
这样就结束了一次指挥中心对存储器单元读数的操作。若是向某存储单元写数,指挥中心只要在上述第2步中向读写线R/W-发一个低电平信号,并将要写的数据信息放在数据线D\(_{7}\)~D0上,就可以把该数据信息送入存储器了。
二、微机工作前的准备——存储程序
假如我们准备让微机做2+3=?这样一道加法运算题。那么,可以安排出下列算题步骤:
1.把数2放到运算器里;
2.把数3放到运算器里;
3.做加法;(做完加法后结果存放到某指定的寄存器里)
4.程序结束,停机。
所谓编制程序,就是将上述算题步骤作为4条指令依次存入微机中的存储器。如图5所示。由于加数和被加数也是作为指令的附属部分被写入存储器中,于是这一加法程序就占用了从地址0000开始到0005结束的6个存储单元。另外,从这个程序中还可以看出,第1、2条指令包含两个部分。即操作码(第0号、第2号、第4、5号存储单元中的代码)和操作数(第1、3号存储单元中的代码)。任何一条微机指令,必须含有操作码——它告诉微机做些什么事情;至于操作数可以有,也可以没有,仅含操作码的指令通常有两种情况,第一种如图6中第4条指令,它通知微机停止,本身不含操作数。另一种如图6中第3条指令,因为微机做加法肯定是在运算器里进行的,它的操作数已经“隐含”指出,故无必要再写出。最后还要指出,写入存储器中的操作码要用规定的八位二进制来表示,图7所示是可以用于实际运行的2+3=?的程序。我们可以通过微机的键盘将这些代码送入微机中储存起来。

看了图7的程序代码,读者不禁会问,操作码与操作数看起来都是用十六进制表示的二进制代码,微机怎么会区别哪些码代表指令(操作码),哪些码代表操作数呢?这不用担心,微机的指挥中心会有办法将它们区别。这点以后要讲。(张向南)