一、单片机程序执行过程单片机的工作过程实质就是执行程序的过程,也就是我们常说的逐条执行指令的过程。单片机每执行一条指令均可分为三个阶段:取出指令、分析(译码)指令、执行指令。 大多数8位单片机的取指、译码、执行这三步都是按照串行顺序依次进行的。32位单片机的这三步也是必不可少的,但是它是采用预取指令的流水线方式操作,并采用精简指令集,每条指令都是单周期指令,所以它允许指令并行操作。例如再取出第一条指令后,开始对这条指令译码的同时,取出第二条指令;在第一条指令执行时,第二条指令开始译码,然后取出第三条指令,第二条指令同时执行。。。如此循环。从而使CPU在同一时间对不同指令实现不同操作,这样就实现了指令的并行处理,大大加快指令的执行速度。 二、单片机执行指令的三个阶段下面分别说说单片机执行指令的三个阶段。 1、取指令阶段根据程序计数器PC的值,从程序存储器读出当前要执行的指令,并将该指令送到指令寄存器。 2、指令译码阶段取出指令寄存器中的指令操作码进行译码,解析出指令要实现那种操作。(例如是执行数据传送还是进行数据的加减运算) 3、执行指令阶段执行指令规定的操作。(例如对于带操作数的指令,先取出操作码,再取出操作数,然后按照操作码的类型对操作数进行操作) 三、单片机工作过程单片机采用“存储程序”的工作方式,即事先把程序加载到单片机的存储器中,当启动运行后,计算机便自动进行工作。 1、单片机的模型机指令表下表是单片机的模型机指令表,我们以LDA 23这条指令为例,来说明单片机的指令执行过程。 2、执行一条指令的顺序单片机执行程序是一条指令一条指令执行的,执行一条指令的过程可分为两个阶段。 在单片机中,“存储程序”第一条指令的第一个字节一定是操作码。这样,CPU首先进入取指阶段,从存储器中取出指令,并通过CPU译码后,转入执行指令阶段,在这期间,CPU执行指令指定的操作。 取指阶段是由一系列相同的操作组成的,因此,取指阶段的时间总是相同的。而执行指令的阶段是由不同的事件顺序组成的,它取决于被执行指令的类型。执行完一条指令后接着执行下一条指令,如此循环往复。 3、执行一条指令的过程指令“LDA 23”的执行过程是怎样的呢?这是一条直接寻址指令,执行的过程如下图所示。 LDA指令的指令周期由3个CPU周期(即机器周期)组成。其中,第一个CPU周期为取指令周期;执行指令阶段由2个CPU周期组成,第二个CPU周期中将操作数的地址送往地址寄存器并完成地址译码,在第三个CPU周期中,从内存取出操作数并执行装入的操作。 4、执行一个程序的过程采用直接寻址方式,执行“7+10”的程序如下表所示。 加入程序存放在起始地址为00010000B(16)的存储单元中。地址16和17存放第一条指令“LDA 23”,执行第一条指令的过程如下图所示。 单片机启动后,PC中的地址即为16,将16送地址寄存器,接着16被放入地址总线上,找到操作码地址00010000B(16),PC自动加1为17,做好取下一字节的准备;取出“LDA 23”的操作码10010110B放入数据总线;操作码经数据总线装入数据寄存器,因为是操作码,所以还需要装入指令译码器进行指令译码,得到“装入”的操作。 此时PC中的内容已经是17,地址17送入地址寄存器并放到地址总线上,找到操作码地址23,PC又自动加1,做好取第二条指令“ADD 24”的准备,如下图。 找到操作数地址23后,因为是直接寻址,取出23单元中的操作数7放到数据总线,再装入数据寄存器中,经数据寄存器将操作数7装入累加器,如下图所示。至此,第一条指令“LDA 23”执行完毕。 第2,3条指令也是直接寻址方式,执行的过程类似。 |
|
来自: 昵称11935121 > 《未命名》