




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021-8-41 高级语言程序设计 2021-8-42 第一章 计算机组成与 程序设计语言 主讲主讲: : 计算机学院计算机学院 朱立华朱立华 n计算机组成及工作过程 n机器语言程序设计 n由低级语言到高级语言 nC is the most beautiful language! nC程序开发过程 n计算工具计算工具: : 石器时代石器时代: :石头、手指、绳子石头、手指、绳子 铜器时代铜器时代: :算筹(商周时代)、格子(西方)算筹(商周时代)、格子(西方) 铁器时代铁器时代: :算盘算盘 n计算机计算机:(:(comput+ercomput+er):):用于计算的机器用于计算的机器, ,
2、用来处理存储用来处理存储 的数据的数据, ,处理和存储是一个整体处理和存储是一个整体. . n计算机的组成计算机的组成: : 硬件系统硬件系统+ +软件系统软件系统 物质基础物质基础 加在硬件之上加在硬件之上, ,控制控制 硬件完成功能硬件完成功能 通过程序设计语通过程序设计语 言来开发软件言来开发软件 n“计算机计算机之父之父” 冯冯诺依曼诺依曼的程序存储思的程序存储思 想想: : 计算机应该采用二进制计算机应该采用二进制 操作指令也是一种信息操作指令也是一种信息 , ,也也 用二进制数表示用二进制数表示 程序和数据的存储形式可以程序和数据的存储形式可以 完全相同完全相同 程序本身也可包含数
3、据程序本身也可包含数据 n1946.2.14 1946.2.14 ENIAC(ENIAC(埃尼阿克埃尼阿克) ) n现在保存在宾夕法尼亚大学现在保存在宾夕法尼亚大学 n这台机器名为这台机器名为“电子数值积分电子数值积分 和计算机和计算机”( (简称埃尼阿克,简称埃尼阿克, 完全是一个庞然大物,占地面完全是一个庞然大物,占地面 积达积达170m2170m2,质量达,质量达30t30t,耗电,耗电 量也很惊人,功率为量也很惊人,功率为150kW150kW, 共使用了近两万个电子管,在共使用了近两万个电子管,在 工作时这些管子看上去活像两工作时这些管子看上去活像两 万只点着的灯泡。万只点着的灯泡。
4、n埃尼阿克主要用来进行弹道计埃尼阿克主要用来进行弹道计 算的数值分析算的数值分析 n图灵机图灵机: :计算机科学之父、人计算机科学之父、人 工智能之父工智能之父,”,”图灵奖图灵奖” n德国人德国人ConranConran EuseEuse代号为代号为“Z”Z” 的计算机的计算机 n哈佛,哈佛,IBMIBM的的MarkMark系列大型电系列大型电 子计算机子计算机 n真正的第一台计算机是上面三真正的第一台计算机是上面三 台中之一台中之一, ,无从考证无从考证 控制总线控制总线 CPUCPU 计算机硬件的组成计算机硬件的组成 运算器运算器 控制器控制器 存储器存储器接口接口 输入设备输入设备 输
5、出设备输出设备 地址总线地址总线 数据总线数据总线 进行各种算术运算和逻辑运算进行各种算术运算和逻辑运算 控制和指挥整个运算过程,使控制和指挥整个运算过程,使 指令按要求一条一条执行。指令按要求一条一条执行。 存放程序指存放程序指 令及数据令及数据 输入指令代码输入指令代码 和原始数据和原始数据 显示或打印显示或打印 计算结果计算结果 处处 理理 关于二进制问题关于二进制问题 n“世界上有世界上有种人,一种人懂二进制,另一种人种人,一种人懂二进制,另一种人 不懂不懂” n这里的这里的是一个是一个二进制数二进制数, ,就是十进制的就是十进制的2 2 关于二进制等进制问题关于二进制等进制问题 进进
6、 制制 每位每位 符号符号 逢几逢几 进一进一 位位 权权 n n位数的位数的 不同个数不同个数 例子例子( (结果统一到十进制结果统一到十进制) ) 十十090910101010i i1010n n341=3341=3* *10102 2+4+4* *10101 1+1+1* *10100 0=341=341 二二01012 22 2i i2 2n n101=1101=1* *2 22 2+0+0* *2 21 1+1+1* *2 20 0=5=5 八八07078 88 8i i8 8n n127=1127=1* *8 82 2+2+2* *8 81 1+7+7* *8 80 0=87=87
7、 十十 六六 0909 AFAF 16161616i i1616n n31D=331D=3* *16162 2+1+1* *16161 1+13+13* *16160 0=797=797 另另:3:3位二进制数相当于位二进制数相当于1 1位八进制数位八进制数: 101 011B=(53): 101 011B=(53)8 8=53Q=53Q 4 4位二进制数相当于位二进制数相当于1 1位十六进制数位十六进制数: 1101 1001B=(D9): 1101 1001B=(D9)16 16=D9H= =D9H=d9Hd9H n存储器的组成:由存储器的组成:由存储单元存储单元组成,每个单元组成,每个单
8、元1 1个字节个字节 (1B1B),),1B=8bit1B=8bit,每个单元有一个地址。,每个单元有一个地址。 n存储单元中的存储单元中的内容内容与存储单元的与存储单元的地址地址是两个概念,其是两个概念,其 区别如同房间里的东西与房间号码。区别如同房间里的东西与房间号码。 n存储器的大小指它有多少个字节,也就是有多少个不存储器的大小指它有多少个字节,也就是有多少个不 同的地址号,取决于同的地址号,取决于地址总线的根数地址总线的根数,n n根地址总线,根地址总线, 存储器容量为:存储器容量为:2 2n n n常用存储单位:常用存储单位:1TB=1TB=2 210 10GB= GB=2 220
9、20MB= MB=2 230 30KB= KB=2 240 40B B n存储器按功能分为存储器按功能分为3 3大区域:大区域:程序存储区、数据存储程序存储区、数据存储 区和栈区和栈 存放程序中的指令 存放程序中的数据 存取数据都在一端,无 需计算地址,速度快 nCPUCPU:Central Processor Unit,Central Processor Unit,中央处理器,中央处理器,完成各完成各 种种处理(运算处理(运算+ +控制),控制),是计算机最是计算机最核心核心部件。部件。 nCPUCPU中设寄存器的目的:存放数据或计算的中设寄存器的目的:存放数据或计算的中间结果中间结果, 不
10、通过地址总线和数据总线不通过地址总线和数据总线 ,处理速度快,处理速度快 。 n寄存器有两种:寄存器有两种:通用寄存器通用寄存器和和专用寄存器专用寄存器。 n熟悉两个专用寄存器:熟悉两个专用寄存器: (1 1)累加器累加器A A:与算术逻辑运算器与算术逻辑运算器ALUALU一起完成各种运算一起完成各种运算 (2 2)程序计数器程序计数器PCPC:寄存指令的地址,寄存指令的地址,CPUCPU通过通过PCPC取来一条取来一条 指令执行时,指令执行时,PCPC便便“指向指向”下一条指令,即下一条指令,即PCPC的值变为下一的值变为下一 条将要执行的指令的地址。条将要执行的指令的地址。除非遇到除非遇到
11、转移指令转移指令或或子程序调用子程序调用 指令指令,CPUCPU都是通过都是通过PCPC顺序地顺序地提取指令。提取指令。 是运算器的组成部是运算器的组成部 分,暂存操作数及分,暂存操作数及 运算的中间结果运算的中间结果 每一个都有特定的作用每一个都有特定的作用 n程序程序是一组是一组指令指令,指令联系着,指令联系着存储器存储器和和CPUCPU,每条指,每条指 令有令有操作码操作码,有的指令有,有的指令有操作数操作数,指令存储在程序存,指令存储在程序存 储区,操作数存储在数据存储区。储区,操作数存储在数据存储区。 n例:求和程序例:求和程序y=3+4y=3+4所包含的指令如下:所包含的指令如下:
12、 操作码操作码 操作数操作数指令含义指令含义 01H3000H将地址为将地址为3000H的单元中的数据放入累加器的单元中的数据放入累加器A 03H3001H将地址为将地址为3001H单元中的数据与累加器单元中的数据与累加器A中的中的 数据相加,结果留在数据相加,结果留在A 02H3002H将累加器将累加器A中的数据存入地址为中的数据存入地址为3002H的单元的单元 07H停机停机 动动 态态 演示演示 过过 程程 n对计算机而言对计算机而言:它的各个硬件部分存在的意义和相互:它的各个硬件部分存在的意义和相互 的联系通过指令来体现。的联系通过指令来体现。 n对程序设计而言对程序设计而言:计算机就
13、是指令系统。:计算机就是指令系统。 n用机器语言进行程序设计用机器语言进行程序设计: 首先要首先要熟悉熟悉计算机的计算机的指令系统指令系统,熟悉每一条指令的含义及用,熟悉每一条指令的含义及用 法。法。 设计算法设计算法,根据算法编写程序。,根据算法编写程序。 所编写的计算机程序体现为一系列指令的集合,每条指令的所编写的计算机程序体现为一系列指令的集合,每条指令的 操作码和操作数都用操作码和操作数都用二进制二进制数表示。数表示。 用机器语言编写的用机器语言编写的源程序源程序就是机器能识别并执行的就是机器能识别并执行的目标程序目标程序。 指令名称指令名称 操作码操作码|操作数操作数说明说明 取数取
14、数 01H NA(N),将地址为将地址为N的单元的数据存入累加器的单元的数据存入累加器A 存数存数02H N(N)A,将累加器将累加器A的数据存入地址为的数据存入地址为N的单元的单元 加法加法 03H N将地址为将地址为N的单元的数据和的单元的数据和A中的相加,结果存入中的相加,结果存入A 乘法乘法 04H N将地址为将地址为N的单元的数据和的单元的数据和A中的相乘,结果存入中的相乘,结果存入A 比较比较05H NA(N) 比较两个数据(相减),结果存入寄存器比较两个数据(相减),结果存入寄存器F 转移转移 06H NPCN 用地址用地址N更新程序计数器更新程序计数器PC的值的值 停机停机 0
15、7H停机停机 子程序调子程序调 用用 08H N断口地址进栈,用地址断口地址进栈,用地址N更新程序计数器更新程序计数器PC的值的值 返回主程返回主程 序序 09H断口地址出栈,用来更新程序计数器断口地址出栈,用来更新程序计数器PC的值的值 压栈压栈 0aH T寄存器寄存器T中的数据进栈保存(中的数据进栈保存(T表示任意寄存器表示任意寄存器) 出栈出栈 0bH N出栈,出栈数据进入寄存器出栈,出栈数据进入寄存器T 步骤步骤方法一方法一方法二方法二( (y=y=x(ax+b)+cx(ax+b)+c) ) 1取数取数a 取数取数a 2计算计算a*x 计算计算a*x 3 计算计算a*x*x 计算计算a
16、*x+b 4 计算计算b*x计算计算x*(a*x+b) 5计算计算a*x*xb*x 计算计算x*(a*x+b) +c 6 计算计算a*x*xb*x+c(书中未讲,此方法无需调用子程序)书中未讲,此方法无需调用子程序) 说明:说明:方法一的第方法一的第4步,也需要用步,也需要用累加器累加器A,而此刻,而此刻A中中 是第是第3步的结果。这时,只能将第步的结果。这时,只能将第4步定义为一个子程步定义为一个子程 序,结果受主程序调用,因此以上步骤实质上变成:序,结果受主程序调用,因此以上步骤实质上变成: 计算计算z=b*x(子程序子程序) z z 动动 态态 演示演示 过过 程程 方方 法法 一一 动
17、动 态态 演示演示 过过 程程 方方 法法 二二 n入口地址入口地址:第一条指令在程序存储区中的地址。第一条指令在程序存储区中的地址。 n中断中断:一个程序在执行过程中去执行另一个程序。一个程序在执行过程中去执行另一个程序。 n断口地址断口地址:程序中断时的下一条指令的地址。程序中断时的下一条指令的地址。 n保护现场保护现场:程序中断时,有些寄存器存放着中间结果,程序中断时,有些寄存器存放着中间结果, 将寄存器中的中间结果放入某地将寄存器中的中间结果放入某地( (堆栈堆栈) )暂存。暂存。 n恢复现场恢复现场 :子程序执行完毕,再将主程序的中间结子程序执行完毕,再将主程序的中间结 果放回寄存器
18、。果放回寄存器。 n第第1 1步步:将主程序的断口地址压入堆栈保存。将主程序的断口地址压入堆栈保存。 n第第2 2步步:将子程序的入口地址送入将子程序的入口地址送入PCPC。 n第第3 3步步:进入子程序后,首先保护主程序现场。进入子程序后,首先保护主程序现场。 n第第4 4步步:执行子程序。执行子程序。 n第第5 5步步:子程序执行完毕,恢复主程序现场。子程序执行完毕,恢复主程序现场。 n第第6 6步步:将主程序的断口地址从栈顶送回将主程序的断口地址从栈顶送回PCPC。 ny=ax2+bx+c 方法一的清单方法一的清单 n及执行过程见动态演示。及执行过程见动态演示。 动动 态态 演示演示 过
19、过 程程 方方 法法 一一 n机器语言机器语言:是第一代程序设计语言,是计算机硬件系是第一代程序设计语言,是计算机硬件系 统能识别和执行的唯一语言统能识别和执行的唯一语言。 n机器语言的机器语言的3 3个局限性个局限性: (1 1)程序不容易读写,操作码和操作数都是二进制数程序不容易读写,操作码和操作数都是二进制数 (2 2)对计算机硬件的依赖性很强,可移植性差对计算机硬件的依赖性很强,可移植性差 (3 3)指令功能简单,没有按照数据类型分类)指令功能简单,没有按照数据类型分类 改进:改进:用助记符代替机器的数字指令,用符号地址表示存储用助记符代替机器的数字指令,用符号地址表示存储 单元的数字
20、地址单元的数字地址汇编语言汇编语言( (第二代程序设计语言第二代程序设计语言) ) 改进:改进:面向问题而非面向机器,与计算机硬件结构无关面向问题而非面向机器,与计算机硬件结构无关 改进:改进:提供丰富的数据类型,语句一般都采用自然语汇,提供丰富的数据类型,语句一般都采用自然语汇, 一条语句往往相当于多条指令。一条语句往往相当于多条指令。 n第一种高级程序设计语言第一种高级程序设计语言:FortranFortran语言语言(1954(1954年年) ) n高级语言的发展高级语言的发展: (1 1)从早期语言到结构化程序设计语言)从早期语言到结构化程序设计语言 (2 2)从面向过程到非过程化程序
21、设计语言从面向过程到非过程化程序设计语言( (面向对象)面向对象) (3 3)发展趋势:面向应用)发展趋势:面向应用 n第一种结构化程序设计语言第一种结构化程序设计语言:PascalPascal语言语言(1970(1970年年) ) n高级语言的种类有数百种,比高级语言的种类有数百种,比较熟悉的有:较熟悉的有: FortranFortran、BasicBasic、PascalPascal、C C、FoxBASEFoxBASE、FoxProFoxPro、LispLisp、 PrologProlog 、C+C+、JavaJava、C#C#等等 n区分两组概念:区分两组概念: n(1 1)程序设计语
22、言与程序)程序设计语言与程序( (类似于汉语与文章的关系类似于汉语与文章的关系) ) 程序设计语言是进行程序设计的工具,是计算机全部指令的程序设计语言是进行程序设计的工具,是计算机全部指令的 集合;而任何计算机程序都需要用程序设计语言来编写,是集合;而任何计算机程序都需要用程序设计语言来编写,是 为实现某个算法从该语言中选择所需要指令组成的集合。为实现某个算法从该语言中选择所需要指令组成的集合。 n(2 2)源程序与目标程序)源程序与目标程序: 源程序:源程序:程序员编写的程序程序员编写的程序 目标程序:目标程序:计算机最终能识别并运行的程序计算机最终能识别并运行的程序( (二进制二进制) )
23、 源源 程程 序序 目目 标标 程程 序序用机器语言编写用机器语言编写用汇编语言编写用汇编语言编写 汇汇 编编 程程 序序 用高级语言编写用高级语言编写 编编 译译 程程 序序 汇编汇编编译编译 nC C 语言最早的原型是语言最早的原型是 ALGOL 60ALGOL 60 n1973 1973 年,年,AT&T AT&T 贝尔实验室的贝尔实验室的 Dennis RitchieDennis Ritchie n(D.M.RITCHIE(D.M.RITCHIE,被尊为,被尊为“C C语言之父语言之父”) ) 在在 BCPL BCPL 和和 B B 语言的基础上设计出了一种新的语言语言的基础上设计出了
24、一种新的语言C C语言,语言, 开发开发UNIXUNIX操作系统操作系统及其上的应用程序。及其上的应用程序。 n 1999 1999 年,年,ANSI ANSI 和和 ISO ISO 通过了最新版本的通过了最新版本的 C C 语言语言 标准标准C99C99,这是关于,这是关于 C C 语言的最新、最权威的定义。语言的最新、最权威的定义。 n选择学习选择学习C C语言的理由:语言的理由:C C语言不仅是面向过程的程序语言不仅是面向过程的程序 设计语言中功能最强、效率最高的语言,更是面向对设计语言中功能最强、效率最高的语言,更是面向对 象程序设计语言象程序设计语言C+C+、JavaJava和和C#
25、C#的基础。的基础。 nC C语言具有很多优点:语言具有很多优点: 简洁紧凑、灵活方便简洁紧凑、灵活方便 运算符丰富(运算符丰富(3434个)个) 数据类型丰富数据类型丰富 C C是结构式语言,程序层次清晰是结构式语言,程序层次清晰 C C语法限制不太严格,语法比较灵活。语法限制不太严格,语法比较灵活。 C C语言允许直接访问物理地址,可直接对硬件进行操作语言允许直接访问物理地址,可直接对硬件进行操作 ,既,既 可以开发系统软件,又可以开发应用软件可以开发系统软件,又可以开发应用软件(中级语言)(中级语言) C C语言程序生成代码质量高,程序执行效率高语言程序生成代码质量高,程序执行效率高 C
26、 C语言适用范围大,可移植性好,适合多种操作系统,多种语言适用范围大,可移植性好,适合多种操作系统,多种 机型机型 开 始 编 辑 编 译 连 接 执 行 有错? 结果正确? 结 束 有 源程序 file.c 目标程 序 file.obj 库函数和 其它目标 程序 可执行 目标程 序 无 正确 不正确 file.exe 编辑编辑 程序代码的录入程序代码的录入, , 生成源程序生成源程序* *.c.c 编译编译 链接链接 运行运行 源程序源程序目标程序目标程序可执行程序可执行程序 内容内容程序设计程序设计 语言代码语言代码 机器语言代码机器语言代码机器语言代机器语言代 码码 可执行?可执行?不可
27、以不可以不可以不可以可以可以 扩展名扩展名 .c.c. .objobj.exe.exe 语法分析查错,翻译语法分析查错,翻译 生成目标程序生成目标程序* *. .objobj 与其它目标程序或库与其它目标程序或库 链接装配链接装配, ,生成可执行生成可执行 程序程序* *.exe.exe nC C程序的开发在特定的集成开发环境下进行程序的开发在特定的集成开发环境下进行 n本教材中所有的程序在本教材中所有的程序在VC+6.0VC+6.0下通过,并且课程配下通过,并且课程配 套实验也要求在套实验也要求在VC+6.0VC+6.0下下 nVC+6.0VC+6.0集成环境中提供了编辑器、编译器、链接器、集成环境中提供了编辑器、编译器、链接器、 调试器等多种工具,使得程序员从源程序的编辑到最调试器等多种工具,使得程序员从源程序的编辑到最 后的运行均可在集成环境中完成后的运行均可在集成环境中完成 n举例:举例:一个一个C C程序在程序在VC+6.0VC+6.0下开发的全过程下开发的全过程 (请任课教师在(请任课教师在VC+6.0VC+6.0现场演示一个程序从编辑到运现场演示一个程序从编辑到运 行的全过程)行的全过程) n重点掌握:冯重点掌握:冯 诺依曼体系结构的计算机诺依曼体系结构的计算机 程序存储思想程序存储思想的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课题申报书 周以华
- 初中课题立项申报书
- 厂房委托招商合同范本
- 省级高校教改课题申报书
- 医疗维修托管合同范本
- 咨询产品服务合同范本
- 美学课题申报书格式要求
- 研究生课题申报书分工
- 出境加工合同范例
- 关于邮寄合同范本
- 认识常用电子元件图解课件
- 2025年铁岭卫生职业学院单招职业技能测试题库1套
- 2025年黑龙江商业职业学院单招职业技能测试题库及参考答案
- GB/T 20840.10-2025互感器第10部分:低功率无源电流互感器的补充技术要求
- 税法(第5版) 课件 第13章 印花税
- 建加油站申请书
- 2024-2025学年广州市高二语文上学期期末考试卷附答案解析
- 课题申报参考:中外文艺交流互鉴研究
- 少年商学院《DeepSeek中小学生使用手册》
- 2025年山东铝业职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2025年上半年天津中煤进出口限公司招聘电力及新能源专业人才易考易错模拟试题(共500题)试卷后附参考答案
评论
0/150
提交评论