嵌入式硬件技术基础
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 计算机软件

1.2.1 软件的组成与分类

计算机中的程序、数据和文档称为计算机软件。计算机软件一般分为系统软件和应用软件两类。如图1-2所示。

图1-2 软件组成

系统软件是方便用户使用计算机,发挥计算机效率、功能的基础软件。它负责计算机系统的调度管理,提供程序的运行环境和开发环境,并且向用户提供各种服务。

应用软件是用各种程序设计语言编写出来的具有特定功能的程序。

1.2.2 计算机语言

计算机的功能是强大的,但它又是“没有智慧的”,说它强大,是因为计算机能够帮助人们完成人类完不成的事务,说它是“没有智慧的”,则是因为计算机是没有“主观能动性”的,计算机所进行的各种行为都是人根据具体问题,用计算机能够“明白”的语言,把按照一定的方法组织和处理表示不同信息的不同数据的完整描述输入计算机,而计算机任何时刻都能够“忠诚”地执行这样的描述,这个过程实际上就是编程。这里计算机能够“明白”的语言就是计算机语言。计算机语言包括机器语言、汇编语言和高级语言。

1. 机器语言

机器语言是计算机硬件能够直接识别和执行的以二进制代码表示的机器指令。在早期的计算机中,人们用机器语言来编写程序。用机器语言编写程序时,必须知道所使用计算机的指令格式,编排好存放每条指令的地址,以区分执行程序的先后次序及各指令之间的跳转关系。所以机器语言是面向机器的,每一种机器语言编写的程序只适用于某种特定类型的计算机。由于计算机能直接识别和执行机器语言程序,故机器语言程序又称为目标程序,显然机器语言程序执行起来是最快的。

用机器语言编写程序既烦琐,又容易出错,还要求程序编写者深入理解计算机硬件结构。因此,在计算机发展过程中,逐步出现了汇编语言和各种高级的程序设计语言,以帮助人们更有效、更方便地编写程序。

2. 汇编语言

汇编语言是一种与计算机机器语言相当接近的符号语言。它采用助记符来表示机器指令的操作码。采用符号地址指示程序存放在存储器中的位置及跳转关系,并增加一些控制程序执行和便于表示数据及其存放的命令,以方便人们编写程序。汇编语言与机器语言一样,也是一种面向机器的语言。

用汇编语言编写的程序称为汇编语言源程序。计算机不能直接识别和执行汇编语言源程序,需要通过称为汇编程序的一种语言处理程序加以处理。得到机器指令形式的目标程序,计算机才能识别和执行。将汇编语言源程序处理为机器语言的目标程序的过程,称为“汇编”;反之,将机器语言的目标程序转换为汇编语言源程序的过程,称为“反汇编”。也可将一种计算机的汇编语言源程序汇编成另一种计算机的机器语言的目标程序,这个过程称为“交叉汇编”。

汇编语言与硬件关系密切,用它编写的程序紧凑,占主存小,速度快,适合于编写直接访问系统硬件的系统程序或设备控制软件。

3. 高级语言

高级语言克服了机器语言和汇编语言依赖于具体计算机的缺陷,使计算机语言成为描述各种问题求解过程的算法语言。并从过程化语言发展为现代广泛应用的面向对象的语言。用某种高级语言编写的程序称为高级语言源程序,如C++语言源程序、PASCAL语言源程序等。

计算机不能直接执行高级语言源程序,源程序在输入计算机后,通过“翻译程序”翻译成机器语言形式,计算机才能识别和执行。这种“翻译”通常有两种方式,即编译方式和解释方式。编译方式是指利用事先编好的一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用户将高级语言编写的源程序输入计算机后,编译程序便把源程序翻译成用机器语言表示的与之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算,并取得结果。解释方式是指源程序进入计算机后,由一个叫解释程序的处理程序边扫描边解释,逐句输入逐句翻译,计算机再逐句执行,并不产生目标程序。如PASCAL,FORTRAN,COBOL等高级语言按编译方式执行;BASIC语言则以解释方式执行为主。

高级语言不涉及机器的硬件结构,表达方式比较接近自然语言,描述问题的能力强,通用性强,编写程序容易,适合于编写与硬件没有直接关系的应用软件。

在现代程序设计中,采用在高级语言中提供与汇编语言之间的调用接口的方法,很好地利用了高级语言和汇编语言各自的优点,摒弃了两者的不足。用汇编语言编写的程序作为高级语言的一个外部过程或函数,汇编源程序和高级语言源程序分别通过汇编、编译成目标文件后,利用连接程序把它们连接成可执行文件即可执行。