[size=small]微型计算机中程序的执行过程

计算机采取"存储程序与程序控制"的工作方式,即事先把程序加载到计算机的存储器中,当启动运行后,计算机便会自动按照程序的要示进行工作。

为了进一步说明微机的工作过程,我们来具体讨论一个模型机怎样执行一段简单的程序。例如,计算机如何具体计算3+2=?虽然这是一个相当简单的加法运算,但是,计算机却无法理解。人们必须要先编写一段程序,以计算机能够理解的语言告诉它如何一步一步地去做,直到每一个细节都详尽无误,计算机才能正确地理解与执行。为此,我们在启动工作计算机之前做好如下几项工作:

①首先用助记符号指令编写源程序。

②由于机器不能识别助记符号,需要翻译(汇编)成机器语言指令。

假设上述①、②两步我们已经做了。

③将数据和程序通过输入设备送至存储器中存放,整个程序一共3条指令,5个字节,假设它们存放在存储器从00H单元开始的相继5个存储单元中。

1.执行一条指令的过程

计算机机招待程序时是一条指令一条指令地执行的。执行一条指令的过程可分为两个阶段,如图1-6所示。

首先,CPU进入以指令阶段,从存储器中取出指令码送到指令寄存器中寄存,然后对该指令译码后,再转入执行指令阶段,在这期间,CPU执行指令指定的操作。

取指令阶段是由一系列相同的操作组成的,因此,取指令阶段的时间总是相同的。而执行指令的阶段是由不同的事件顺序组成的,它取决于被执行指令的类型。执行完一条指令后接着执行下一条指令,即:

取指 执指,取指 执指……如此反复,直至程序结束。

2.执行程序的过程

开始执行程序时,必须先给程序计数器PC赋以第一条指令的首地址00H,然后就进入第一条指令的取令的取指令阶段。

第一条指令的执行过程:

取指令阶段:

①将程序计数器PC的内容(00H)送至地址寄存器AR,记为PC AR。

②程序计数器PC的内容自动加1变为01H,为取下一个指令字节作准备,记为PC+1 PC。

③地址寄存器AR将00H通过地址总线送至存储器,经地址译码器译码,选中00号单元,记为AR M。

④CPU发出"读"命令。

⑤所选中的00号单元的内容B0H读至数据总线DB,记为(00H) DB。

⑥经数据总线DB,将读出的B0H送至数据寄存器,记为DB DR。

⑦数据寄存器DR将其内容送至指令寄存器IR,经过译码,控制逻辑发出招待该条指令的一系列控制信号,记为DR IR,IR ID、PLA。经过译码,CPU"识别"出这个操作码就是MOV A,03指令,于是,它"通知"控制器发出执行这条指令的各种控制命令。这就完成了第一条指令的取指令阶段,上述过程如图所示。(点击看java动画演示)

1执行指令阶段:

经过对操作码B0H译码后,CPU就"知道"这是一条把下一单元中的立即数取入累加器A的指令。所以,执行第一条指令就必须把指令第二字节中的立即数取出来送至累加器A,取指令第二字节的过程为:

①PC AR,即将程序计数器的内容01H送至地址器AR。

②PC+1 PC,即将程序计数器的内容处动加1变为02H,为取下一条指令作准备。

③AR M,即地址寄存器AR将01H通过地址总线送至存储器,经地址译码选中01H单元。

④CPU发出"读"命令。

⑤(01H) DB,即选中的01H存储单元的内容03H读至数据总线DB上。

⑥DB DR,即通过数据总线,把读出的内容03H送至数据寄存器DR。

⑦DR A,因为经过译码已经知道读出的是立即数,并要求将它送到累加器A,故数据寄存器DR通过内部数据总线将03H送至累加器A。

上述过程如图所示。(点击看java动画演示)

第二条指令的执行过程:

第一条指令执行完毕以后,进入第二条指令的执行过程。

取指令阶段:

这个过程与取第一条指令的过程相似。

执行指令阶段:

经过对指令操作码04H的译码后,知道这是一条加法指令,它规定累加器A中的内容与指令第二字节的立即数相加。所以,紧接着执行把指令的第二字节的立即数02H取出来与累加器A相加,其过程为:

①把PC的内容03H送至AR,记为PC AR。

②当把PC内容可靠地送至AR以后,PC自动加1,记为PC+1 PC。

③AR通过地址总线把地址03H送至存储器,经过译码,选中相应的单元,记为AR M。

④CPU发出"读"命令。

⑤选中的03H存储单元的内容02H读出至数据总线上,记为(03H) DB。

⑥数据通过数据总线送至DR,记为DB DR。

⑦因由指令译码忆知读了的为操作数,且要与A中的内容相加,故数据由DR通过内部数据总线送至ALU的另一输入端,记为DR ALU。

⑧累加器A中的内容送ALU,且执行加法操作,记为A ALU。

⑨相加的结果由ALU输出至累加器A中,记为ALU A。第二条指令的执行过程如图1-10所示。至此,第二条指令的执行阶段结束了,就转入第三条指令的取指令阶段。

按上述类似的过程取出第三条指令,经译码后就停机。这样,微计算机就完成了人们事先编制的程序所规定的全部操作要求。

总之,计算机的工作过程就是执行指令的过程,而计算机执行指令的过程可看成是控制信息在计算机各组成部件之间的有序流动过程。信息是在流动过程中得到相关部件的加工处理。因此,计算机的主要功能就是如何有条不紊地控制大量信息在计算机各部件之间有序地流动,其控制过程类似于铁路交通管理过程。为此,人们必须事先制定好各次列车运行图(相当于计算机中的信息传送通路)与列车时刻表(相当于信息操作时间表),然后,再由列车调度室在给定的时刻发出各种控制信号,如交通管理中的红、绿灯、扳道信号等(相当于计算机中的各种微操作控制信号。通常情况下,CPU执行指令时,把一条指令的操作分成若干个如上所述的微操作,顺序完成这此微操作,就完成了一条指令的操作),以保证列车按照预定的路线运行。

[/size]

简述计算机程序执行过程,计算机程序的执行过程相关推荐

  1. mysql查询解析过程_MySQL查询执行过程详解

    查询是用户通过设置某些查询条件,从表或其他查询中选取全部或者部分数据,以表的形式显示数据供用户浏览.查询是一个独立的.功能强大的.具有计算功能和条件检索功能的数据库对象.MySQL数据库中,MySQL ...

  2. Hello程序的转换处理过程及程序执行时的数据流动过程

    文章目录 1 Hello程序的转换处理过程 2 Hello程序执行时的数据流动过程 1 Hello程序的转换处理过程 经典的" hello.c "C-源程序: hello.c的AS ...

  3. ie 不执行回调函时_javascript引擎执行的过程的理解--执行阶段

    一.概述 js引擎执行过程主要分为三个阶段,分别是语法分析,预编译和执行阶段,上篇文章我们介绍了语法分析和预编译阶段,那么我们先做个简单概括,如下: 1.语法分析: 分别对加载完成的代码块进行语法检验 ...

  4. javascript引擎执行的过程的理解--执行阶段

    一.概述 js引擎执行过程主要分为三个阶段,分别是语法分析,预编译和执行阶段,上篇文章我们介绍了语法分析和预编译阶段,那么我们先做个简单概括,如下: 1.语法分析: 分别对加载完成的代码块进行语法检验 ...

  5. jenkins java反序列化_Jenkins “Java 反序列化”过程远程命令执行漏洞

    ###漏洞原理 反序列化是指特定语言中将传递的对象序列化数据重新恢复为实例对象的过程,而在这个过程中会执行一系列的字节流解析和对象实例化操作用于恢复之前序列化时的对象.在原博文所提到的那些 Java ...

  6. mybatis delete返回值_面试:谈谈你对MyBatis执行过程之SQL执行过程理解

    前言 在了解了MyBatis初始化加载过程后,我们也应该研究看看SQL执行过程是怎样执行?这样我们对于Mybatis的整个执行流程都熟悉了,在开发遇到问题也可以很快定位到问题. 更重要的,在面试中遇到 ...

  7. mysql 执行计划不对_MySQL执行计划显示与执行过程不符合

    一 建表和现象的过程如下 CREATE TABLE t1 (id1 INT, a1 INT, b1 INT, PRIMARY KEY(id1)); CREATE TABLE t3 (id3 INT U ...

  8. 电脑计算机显示调用失败和未执行,远程调用过程失败且未执行的详细处理方法...

    在操作电脑的过程中,很多用户都遇到过系统提示远程调用过程失败且未执行的情况,那这是怎么回事呢?其实这是由于错误操作触发了系统中的保护程序而造成,所以针对这一问题,今天本文为大家整理的就是关于远程调用过 ...

  9. mysql源生的sql语句_Django执行源生mysql语句实现过程解析

    1.使用extra方法 解释:结果集修改器,一种提供额外查询参数的机制 说明:依赖model模型 使用方式: 用在where后: Book.objects.filter(publisher_id=&q ...

最新文章

  1. 支付宝发布黑科技“如影计划”,这真的不是愚人节的玩笑
  2. 正则表达式 学习笔记5.3
  3. 无闪烁刷新页面 php,AJAX_Ajax实现无闪烁定时刷新页面实例代码,在Web开发中我们经常需要实现 - phpStudy...
  4. centos 卸载软件_Linux服务器运维必备技能 软件包和启动项超详细整理
  5. matlab怎么写集合,matlab集合操作
  6. 超赞!arXiv论文如何一键链接解读视频,这个浏览器扩展帮你实现
  7. Kinect开发学习笔记之(二)Kinect开发学习资源整理
  8. 黑盒测试 白盒测试 题 1
  9. datatable行内内容太长,有时不自动换行解决方法
  10. pandas 调用mysql函数_pandas的连接函数concat()函数的具体使用方法
  11. VS编译NPAPI:error C2733:不允许重载函数 “NP_Initialize的第二个参数
  12. java 明华读卡器_Java调用明华RF读写器DLL文件过程解析
  13. C#初学者教程系列19:Winform应用程序
  14. python写前端图形界面_Python图形界面开发
  15. java pkcs1转pkcs8_openssl生成RSA格式及pkcs1与pkcs8格式互相转换
  16. Mac常见问题:无线键盘失灵!
  17. 电池寿命计算(电池放电支持时长)
  18. 力扣解法汇总838-推多米诺
  19. java操作word文档(文字,图片,表格添加以及替换操作)
  20. 30000台苹果电脑遭恶意软件入侵,包括最新的M1系列

热门文章

  1. 史上最全各类面试题汇总,没有之一,不接受反驳
  2. android 壁纸制作教程,教你如何自己制作安卓手机壁纸的方法教程
  3. 【思维导图】canny滤波 原理步骤细致剖析
  4. Android FrameWork(AMS,WMS,PMS等)的概念及解析,获取系统服务
  5. Android百度地图之位置定位和附近查找代码简单实现 (上)
  6. Motion Planning中的问题与挑战
  7. 服务器接上显示器后没信号,为什么显示器无信号电脑显示器无信号的解决办法...
  8. 工作中那些让人印象深刻的BUG(3)
  9. 沉淀近900万+营销资产,天攻智投户外营销助力网易有道实现“品效双赢”
  10. 设置导航栏字体大小,颜色和加粗字体的方法