2.4.3 连续执行方式图解说明
1946年,匈牙利著名科学家冯·诺依曼发表了一篇题为《电子计算工具逻辑设计初步探讨》的论文,指出了电子计算机是按照把程序输入机器,使指令和数据可以在程序控制下自动进行读写,即“存储程序控制”。这一思想奠定了现代计算机的基础,从而逐渐形成了现代计算机的工作原理。即将事先用计算机语言(如机器语言、汇编语言、高级语言)编好的一个问题的解决方案,即计算机程序,连同所需要的数据均存储在计算机存储器中,计算机自动连续地执行程序中的各条指令,并及时取得原始数据,暂存中间结果,输出最终结果,即可以实现自动计算。其工作原理如图2-17所示。
程序连续执行方式是单片机的基本工作方式,下面以图解的方式对其执行过程进行说明。
1.指令执行的基本过程
单片机通过执行程序来工作,这些程序的执行是通过以二进制代码形式表示的操作命令来完成的,这些操作命令被称为指令码或机器码。机器码由操作码和操作数或操作数地址构成,操作码指示机器执行何种操作;操作数或操作数地址指示参与操作的数或数的地址。无论是高级语言还是汇编语言编制的程序,经过编译或汇编后都会成为一系列的指令和数据。指令格式为:
<操作码> [操作数或操作数地址]
通常,一条指令执行过程可以分为取指令、分析及取数、执行三个阶段。
图2-17 计算机工作原理图
2.典型指令的执行
单片机连续执行程序工作过程原理如图2-18所示。以Y=3+10求和程序中的加法指令来说明连续执行方式。
设该程序段存放在ROM内2000H单元开始的存储空间内。
该程序由三条指令组成,每条指令均为双字节指令,即第一字节为操作码,第二字节为操作数。
图2-18 单片机连续执行程序工作过程原理图
图2-18中符号的说明:
1)AR——地址寄存器。
2)DR——数据寄存器。
3)IR——指令寄存器,用来存放从存储器中取出的待执行的指令。当指令从内存中取出寄存在指令寄存器之后,在指令执行的过程中,指令寄存器的内容不允许发生变化,以保证实现指令的全部功能。
4)ID——指令译码器,又称操作码译码器或指令功能分析解释器。ID的输入是指令寄存器中的操作码部分,寄存在指令寄存器中的指令只有在其操作码部分经译码后才能识别出是一条什么样的指令。指令经过分析解释,产生相应的控制信号提供给微操作信号发生器。
指令中的操作码部分先送到指令译码器,译码后再送往微操作信号发生器,按时序部件的定时要求,产生执行此指令所需要的一组微操作命令,通过控制总线发送到各相关部件。机器码中的地址码部分送到形成地址的部件,产生实际地址并通过地址总线送到内存,以便从内存中取出相应的操作数。
前面介绍了指令执行的基本过程,下面以执行存放在2202H、2003H单元中的加法指令为例,讨论具体指令的执行过程。
第一步,取指令(包含操作码和地址码),并送到控制器的指令寄存器IR。
①程序计数器PC中存放着指令地址2002H,送内存地址寄存器AR。微操作控制器向存储器发出相应读指令。
②将指定的存储单元2002H的内容(加法指令的操作码24H)送至内存数据寄存器DR。
③微操作控制器发出微操作控制序列将数据寄存器DR中的24H送到指令寄存器IR,并经IR进入指令译码器ID。
④(PC)+1→PC,程序计数器PC自动加1,变为2003H,为取出加法指令的下一字节做好准备。
第二步,取加法指令中的操作码24H,经指令译码器译码后识别出是加法运算,接着从内存中取出加数。
①操作码24H经指令译码器ID译码后识别出是加法运算,结合微操作控制器产生24H的微操作控制序列,使程序计数器PC中2003H送地址寄存器AR和发出读指令。
②将存储单元2003H的内容(加数06H)送至数据寄存器DR。
③数据寄存器的内容送到运算器的暂存寄存器TMP。
第三步,求和,把累加器A中的被加数和暂时寄存器TMP中的加数,送入加法器,最后把和数送入累加器A。即A+TMP→A。
这里有一个问题:经过汇编后的二进制机器码是怎么存储到程序存储器的2000H~2005H单元中的?一般有两种形式:一种是在用户使用可擦除的程序存储器(EPROM)作为程序存储器时,借助于一个开发工具“编程器”,将编辑区内机器码写入存储器中;另一种是在批量生产时,由生产厂家直接将程序的机器码固化到存储器中。