第一章 计算机软件系统
软件是指程序运行所需要的数据以及与程序相关的文档资料的集合。程序是一系列有序的指令的集合。计算机之所以能够自动而连续地完成预定的操作,就是运行特定程序的结果。计算机程序通常都是由计算机语言来编制,编制程序的工作就称为程序设计。对程序进行描述的文本就称为文档。因为程序是用抽象化的计算机语言编写的,如果不是专业的程序员是很难看懂它的,因此就用自然语言来对程序进行解释说明,形成程序的文挡。所以,从广义的角度说,软件是程序和文档的集合体。
计算机的软件系统可以分为系统软件和应用软件两大部分,以系统软件作为基础和桥梁,用户就能够使用各种各样的应用软件,让计算机来为自己完成各种所需要的工作,而这一切都是由作为系统软件核心的操作系统来管理控制的。
第一节 系统软件
一、简介
(一)系统软件
系统软件是管理、监控和维护计算机资源,使计算机能够正常、有效地工作的程序及相关数据的集合。它主要由下面几个部分组成:
操作系统(是控制和管理计算机的平台);
各种程序设计语言及其解释程序和编译程序;
各种服务性程序(如监控管理程序、调试程序、故障检查和诊断程序等);
各种数据库管理系统(如FoxPro等)。
系统软件的核心部分是操作系统,程序设计语言以及各种服务程序一般都是作为计算机系统的一部分提供给用户的。
操作系统是管理和控制计算机系统的软、硬件资源,使它们充分高效地工作,并使用户合理有效地利用这些资源的程序的集合。可以这么说,操作系统是计算机的灵魂。
操作系统按计算机的机型可以分为大、中、小型机和微型机操作系统;按用户数目分为单用户操作系统和多用户(网络)操作系统等;按照操作系统的功能特征来分主要有批处理
操作系统、实时操作系统和分时操作系统。
计算机语言是用户和计算机之间进行交流的工具。计算机不能识别人们日常使用的自然语言,只能识别按照一定的规则编制好的程序,即计算机语言。计算机是通过运行程序来进行工作的,所以计算机语言又称为程序设计语言。
程序设计语言可以分为以下三种。
①机器语言。机器语言是用二进制代码编写,能够直接被机器识别的程序设计语言,也称为二进制代码语言。它的优点是不需翻译就能够被计算机识别,因而执行速度快。它的缺点是不易书写和阅读,在使用时很难理解,而且容易出现错误。
②汇编语言。汇编语言是用能够反映指令功能的助记符来表示指令的程序设计语言,即符号化了的机器语言。汇编语言的优点是运算速度较快,比机器语言易于书写和修改。主要的缺点是因为采用了大量的助记符,所以记忆和掌握起来比较困难。
③高级语言。高级语言是用不依赖于机器的指令系统表达操作意图的程序设计语言。高级语言的表示方式更接近于人类的自然语言。高级语言的特点是,相对于机器语言和汇编语
言,其运行速度较慢。但是它易于书写和修改,而且容易被人们掌握。人们常用的高级语言有BASIC语言、PASCAL语言、C语言等。
(二)应用软件
应用软件是为了解决用户的各种实际问题而编制的程序及相关资源的集合。因此应用软件都是针对某一特定的问题或某一特定的需要而开发的。现在市面上应用软件的种类非常多。例如,各种财务软件包、统计软件包、用于科学计算的软件包、用于进行人事管理的管理系统、用于对档案进行管理的档案系统、用于教育教学的CAI系统等。
用以下几方面指标可以衡量一个应用软件的质量:
●占用内存空间的大小
●软件的运行速度
●软件设计的可靠性
●通用性和可移植性
二、指令系统
用机器语言编写的程序,每条指令都是二进制形式的指令代码,由0和1组成。计算机硬件可以直接识别,执行速度快,但不易调试、修改,程序的直观性差、移植性差。
所谓指令是指一种规定CPU执行某种特定操作的命令,也称为机器指令。
对于IBM PC机它有它的指令系统,其中包括:数据传送指令、串处理指令、算术指令、控制移动指令、逻辑指令、处理机控制指令。
这里将简单介绍其指令类型及指令说明,如有要求给具体的指令格式及应用,请与amay联系,amay加以更新。
1.数据传送指令:负责把数据、地址或立即数传送到寄存器或存储单元中。
数据传送指令类型说明:
(1)通用数据传送指令
MOV(传送)、PUSH(进栈)、POP(出栈)、XCHG(交换)
(2)累加器专用传送指令
IN(输入指令)、OUT(输出指令)
(3)地址传送指令
LEA(有效地址送寄存器)、LDS(指针送寄存器和DS)、LES(指针送寄存器和ES)
(4)标志寄存器传送指令
LAHF(标志送AH)、SAHF(AH送标志寄存器)、PUSHF(标志进栈)、POPF(标志出栈)
2.算术指令:用来执行算术运算。
(1)加法指令
ADD(加法)、ADC(带进位加法)、INC(加1)
(2)减法指令
SUB(减法)、SBB(带借位减法)、DEC(减1)、NEG(求补)、CMP(比较)
(3)乘法指令
MUL(无符号数乘法)、IMUL(带符号数乘法)
(4)除法指令
DIV(无符号数除法)、IDIV(带符号数除法)、CBW(字节转换为字)、CWD(字转换为双字)
3.逻辑指令:对字或字节执行逻辑运算。
(1)逻辑运算指令
AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)、XOR(异或)、TEST(测试)
(2)移动指令
SHL(逻辑左移)、SAL(算术左移)、SHR(逻辑右移)、SAR(算术右移)、ROL(
循环左移)、ROR(循环右移)、RCL(带进位循环左移)、RCR(带进位右移)
4.串处理指令:处理存放存储器里的数据串。
指令:
MOVS(串传送)、CMPS(串比较)、SCAS(串扫描)、LODS(从串取)、STOS(存入串)
5.控制转移指令:用来控制程序的执行流程。
(1)无条件转移指令
JMP(段间和段内转移)
(2)条件转移指令
JZ(结果为0(或相等)则转移)、JS(结果为负则转移)、JNS(结果为正则转移)、JO(溢出则转移)、JNO(不溢出则转移)、JP(奇偶位为1则转移)、JNP(奇偶位为0则转移)
(3)循环指令
LOOP(循环指令)、LOOPPZ/LOOPE(当为0或相等时循环指令)、LOOPNZ/LOOPNE(当不为0或不相等时循环指令)
(4)子程序指令
计算机软件的组成CALL(调用指令)、RET(返回指令)
(5)中断指令
INT(中断)、INTO(如溢出则中断)、RIET(从中断返回)
6.处理机控制指令:
(1)标志处理指令
CLC(进位位置0指令)、CMC(进位位求反指令)、STC(进位位置为1指令)、CLD(方向标志置0指令)、STD(方向标志位置1指令)、CLI(中断标志置0指令)、STI(中断标志置1指令)
(2)其他处理机控制指令
NOP(无操作)、HLT(停机)、WAIT(等待)、ESC(换码)、LOCK(封锁)
三、机器语言
由计算机硬件系统直接识别的,不需要翻译直接供机器使用的程序语言,也称为手编语言,其代码由0和1组成。机器语言通常随计算机型号的不同而不同。
机器语言中的每一条语句(机器指令)实际上是一条二进制形式的指令代码,由操作码和地址码组成。修改繁琐,但执行速度最快。
其特点:与人们习惯用的语言差别大,难学,难记,难调试,可移植性差。
人和计算机打交道时,计算机并不能理解和执行人们使用的自然语言,而只能接受和执行二进制的指令。每一条二进制指令使计算机执行一个操作。计算机能够直接识别和执行的这种指令,称为机器指令。每一种类型的计算机都规定了可以执行的若干种指令,这种指令的集合就是机器语言指令系统,简称机器语言。机器语言的指令由二进制数0和1组成,
使人难学、难记、难懂、难修改,给使用者带来很大的不便。并且机器语言是随不同类型的机器而异的,一个能用于某种型号计算机的机器语言程序,拿到另一种型号计算机上执行是不行的。所以机器语言目前已不广泛被用户直接使用,用户更愿意使用高级语言,但机器语言是能被机器直接执行的语言,因此它依然存在,并没有被淘汰。
虽然人们用COBOL、PASCAL和FORTRAN来谈论程序设计,但是只有一种语言能够在给定的计算机上执行。那就是所谓的机器语言。所有其他语言都要被编译(翻译成机器语言),并且最终用机器语言来执行。
机器语言是很繁琐的,因为指令(又称操作码或OP码)和运算数据的单元是用二进制(一串0和1)来表示的。符号语言(有时称作汇编语言或汇编级的语言)具有一个本质上与机器语言一一对应的指令系统。汇编语言的优点是它用助记符号而不是用0和1来表示指令。例如,汇编语言中直接用“A”来表示“加”指令,而不用一串0和1来表示。
在1970年之前,机器级和汇编级语言常常用于应用程序的开发,特别用于系统软件的开发。当时信息服务人员认为目标程序利用计算机的效率高。自那时以来使用高级语言无论在发挥人或是计算机的效率上都超过了机器语言。由于这一原因,多数现行的程序设计都
是用高级语言来完成的。
四、汇编语言
汇编语言是在机器语言的基础上发展的,用一些约定的助记符来代替指令中的操作码和操作数,这就是“汇编语言”。是一种符号化的机器语言,与机器语言指令之间基本上是一一对应的。汇编语言也是从属于特定的机型,也是面向机器的语言,运行速度接近机器语言,但不能被机器语言直接识别与执行。
汇编语言的使用范围:实时控制,实时检测及实时处理。
其特点是属于低级语言,通用性差,编程麻烦,程序员必须熟练掌握计算机硬件的结构.
汇编语言程序的处理过程。首先用编辑程序(如屏幕编辑程序WORDSTAR)产生汇编语言的源程序(属性为ASM的源文件),源程序就是用汇编语言的语句编写程序,它是不能为机器所识别的,所以要经过汇编程序加以翻译,因此汇编程序的作用就是把源文件转换成用二进制代码表示的目标文件(称为OBJ文件)。在转换的过程中,汇编程序将对源程序进行二遍扫视,如果源程序中有语法错误,则汇编结束,并指出源程序中的错误,用户
还可以用编辑程序来修改源程序中的错误,最后得到无语法错误的OBJ文件。
OBJ文件虽然已经是二进制文件,但它还不能直接上机运行,必须经过连接程序(LINK)把目标文件与库文件或其他文件连接在一起形成可执行文件(EXE文件),这个文件可以由DOS装入存储器,并在机器上运行。