第二节 计算机语言
当人们使用计算机来完成某些任务时,就必须告诉它怎样具体地处理这些任务。同计算机进行这种交流的工具是什么呢?就是计算机语言。人们利用计算机语言告诉计算机某个问题应如何处理,先做什么,后做什么,即人们用计算机语言安排好处理步骤,每一步都是用计算机语言描述的。这种用计算机语言描述的处理步骤,称为程序。计算机执行程序时,就按照处理步骤完成人所规定的任务。
计算机语言可分为3类:机器语言、汇编语言和通用语言。前两类是面向机器的,一般称为低级语言;后一类是面向程序设计人员的,一般称为高级语言。
一、机器语言
虽然可以使用各种语言编写程序,但计算机却只能识别在设计机器时事先规定好的机器指令。机器指令即指挥计算机完成某一基本操作的命令。它们均由0和1二进制代码串组成。机器指令的一般格式为:
操作码字段指出该指令执行何种操作,地址码字段指出被操作的数据(操作数)和操作结果的存放位置。
例如,将地址为0000 0100B的字节存储单元中的内容加3,若用Intel 8086/8088机器指令来完成该操作,则相应的机器指令为:
10000011
00000110
00000100
00000011
这条指令共4个字节,其中前2个字节的二进制代码是操作码,表示要进行“加”操作,并指明了以何种方式取得两个加数;第三个字节二进制代码指出了第一个加数存放在偏移地址为00000100B的内存单元,最后一个字节二进制代码指出第二个加数3。
机器指令也常被称为硬指令,它是面向机器的,即不同的计算机规定了自己所特有的、一定数量的基本指令(指令系统)。用机器指令进行描述的语言叫作机器语言,用机器语言编写的程序称为机器语言程序或目标程序。目标程序中的二进制机器指令代码称为目标代码。
使用任何语言编写的程序最终都要转换成机器语言程序,才能被计算机识别、理解并执行。
二、汇编语言
由于机器指令是用二进制表示的,编写、阅读和调试程序都相当困难。于是,人们想出了用助记符表示机器指令的操作码,用变量代替操作数的存放地址,还可以在指令前冠以标号,用来代表该指令的存放地址等。这种用符号书写的、与机器指令一一对应的、并遵循一定语法规则的符号语言就是汇编语言。用汇编语言编写的程序称为汇编语言源程序。例如前面的例子,用汇编语言来书写就成为:
MOV SI,0004H ADD BYTE PTR [SI],3
由于汇编语言是为了方便用户而设计的一种符号语言,因此,用它编写出的源程序并不能直接被计算机识别,必须将它翻译成机器语言程序即目标程序才能被计算机执行。这个翻译工作是由系统软件提供的一个语言加工程序完成的。这个把汇编语言源程序翻译成目标程序的程序称为汇编程序,汇编程序进行翻译的过程叫汇编。这里,汇编程序相当于一个翻译器,它加工的对象是汇编语言源程序,加工的结果是目标程序,如图1-2所示。
图1-2 汇编语言源程序翻译成目标程序
为了能让汇编程序正确完成翻译工作,必须告诉它源程序从什么位置开始存放,汇编到什么位置结束,数据应放在什么位置,数据类型是什么,等等。这就要求源程序中有一套告诉汇编程序如何进行汇编的命令,这种汇编命令称为伪指令。由此可见,指令助记符、语句标号、数据变量、伪指令及它们的使用规则构成了整个汇编语言的内容。
与机器语言相比,汇编语言易于理解和记忆,所编写的源程序容易阅读和调试。汇编语言的魅力还在于程序占用内存少,执行速度快,并且可直接对硬件编程,能充分发挥计算机的硬件功能。
三、高级语言
高级语言是用接近自然语言的符号对计算机操作步骤进行描述的计算机语言,如Pascal、C语言等。目前计算机高级语言有数百种之多。高级语言的特点是程序容易编址和调试,科学计算和事件处理能力强,且与机器硬件无关,通用性强;但生成目标代码长度长,占用内存多,执行速度较慢。
上述的高级语言是面向过程的程序设计语言。随着计算机软件技术的发展,出现了面向对象的可视化程序设计语言,如Java、C++、Delphi等,这种语言是将数据(属性)及数据的处理过程(方法)封装起来,用对象加以描述。程序设计者通过实现对象,完成软件的开发,但数据处理过程的具体实现采用的仍是面向过程的方法。