购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2.5 软件系统

完整的微型计算机系统包括硬件和软件,软件又分成系统软件和应用软件。系统软件是指使用、维护和管理计算机系统的程序及其文档,其中最重要的是操作系统。应用软件是指解决某个问题的程序及其文档,大到用于处理某专业领域问题的程序,小到完成一个非常具体工作的程序。

1.操作系统

操作系统(Operating System,OS)管理着系统的软硬件资源,为用户提供使用机器的交互界面,为程序员使用资源提供可供调用的驱动程序,为其他程序构建稳定的运行平台。

在早期的16位IBM PC系列机和兼容机上,主要采用磁盘操作系统(Disk Operating System,DOS)。DOS是单用户单任务操作系统,通常一个用户一次只能运行一个程序,且只有一个用户可以登录使用该系统。DOS操作系统相对比较简单,但允许程序员访问任意资源,尤其是允许执行输入/输出指令。本书将在第8章介绍DOS环境的汇编语言程序设计。读者可以使用MS-DOS启动机器并运行于实地址方式,但建议使用Windows操作系统的模拟DOS环境。模拟DOS环境虽不是真正的DOS平台,但兼容绝大多数DOS应用程序,同时可以借助Windows的强大功能和良好保护。

32位PC主要使用Windows或Linux操作系统,本书主要基于Windows操作系统平台。32位Windows操作系统有多个版本,依次是Windows 98、Windows 2000、Windows XP,以及Windows 7或Windows 8等。Windows操作系统除提供图形操作界面外,还提供控制台环境。32位控制台环境具有类似于DOS的外观和操作,也是采用键盘直接输入命令,所以被称为“命令提示符”。但控制台功能更多,例如,支持汉字输入/输出等。

在32位Windows窗口环境下,可以用鼠标依次单击“开始”→“程序”→“附件”→“命令提示符”,进入32位控制台环境;也可以在“开始”→“运行”打开的对话框中,输入“cmd”命令进入。

打开32位控制台窗口,实际上是执行了Windows的控制台程序CMD.EXE。它保存于Windows文件夹的SYSTEM32子文件夹下。

32位Windows所在文件夹的SYSTEM32子文件夹下,还有一个COMMAND.COM文件,它是为了兼容16位DOS应用程序而存在的,可以说这才是一个模拟DOS环境。由于32位控制台(CMD.EXE程序)的窗口外观和操作都与原来的DOS操作系统类似,绝大多数人都简单地称之为DOS窗口,他们甚至不知道16位模拟DOS环境(COMMAND.COM程序)的存在。绝大多数情况下,标准的16位DOS应用程序都可以在32位控制台运行,不过有些程序还是有差别的。

要打开16位模拟DOS窗口,需要在“运行”对话框中输入COMMAND命令。DOS窗口中提示为“Microsoft (R) Windows DOS”,版权时间是1990—2001年,说明从2001年以后没有再更新。为了避免与其他同名文件混淆,打开16位模拟DOS窗口时最好给出完整的路径,例如,输入“%SystemRoot%\system32\command.com”。

目前,PC通常使用64位Windows操作系统(例如Windows10、Windows11)。在64位Windows操作系统中,控制台也是64位的,执行的程序名称还是CMD.EXE,兼容32位应用程序。不过,64位Windows不兼容16位DOS应用程序,所以操作系统中不存在COMMAND.COM文件。运行16位DOS应用程序需要使用虚拟机软件模拟DOS环境,例如简单的DOSBox或者功能强大的VMware虚拟机。可以在搜索栏中输入“cmd”,查找并执行被称为命令提示符的控制台程序;也可以先启动终端程序,再打开命令提示符窗口。64位Windows操作系统常默认安装PowerShell终端程序,其外观和基本操作与DOS窗口、控制台(称为命令提示符)类似,但它比控制台更强大,是一种跨平台的任务自动化和配置管理框架。不过,在PowerShell终端执行当前目录下的可执行文件,需要在文件名前加上“./”。

相对操作简单的触屏、图形界面来说,字符输入的命令行虽然单调,但却是最基本的交互方式。由于需要理解目录结构、文件路径等知识,因此读者在命令提示符的操作过程中可以更深刻地认识操作系统的文件管理机制。

2.汇编程序

支持Intel 80x86处理器的汇编程序有很多。在DOS和Windows操作系统下,最流行的是微软公司的汇编程序MASM,Borland公司的TASM也很常用,两者相差不大。在Linux操作系统下,标准的汇编程序是GAS,NASM也较常用。两者相差不大,均使用Intel语法。在UNIX和Linux操作系统下,标准的汇编程序是GCC开发套件的AS,但其使用AT&T语法。而NASM则是互联网时代较流行的汇编程序,采用与MASM类似的Intel语法,既可应用于DOS/Windows操作系统,也可应用于UNIX/Linux操作系统,还可应用于macOS X操作系统。

(1)MASM

20世纪80年代初,微软公司推出MASM 1.0。MASM 4.0支持80286/80287处理器和协处理器;MASM 5.0支持80386/80387处理器和协处理器,并加入了简化段定义伪指令和存储模型伪指令,汇编和连接的速度更快。MASM 6.0是1991年推出的,支持80486处理器,它对MASM进行重新组织,并提供了许多类似高级语言的新特点。MASM 6.0之后又有一些改进,推出了MASM 6.11,利用它的免费补丁程序可以升级到MASM 6.14,MASM 6.14支持MMX Pentium、PentiumⅡ及Pentium Ⅲ指令系统。MASM 6.11是最后一个独立发行的MASM软件包,这以后的MASM都存在于Visual C++开发工具中,例如,本书从Visual C++ 6.0中复制出MASM 6.15,以便支持Pentium 4的SSE2指令系统。Visual C++.NET 2003中包含MASM 7.10,但没有什么大的更新。Visual C++.NET 2005提供的MASM 8.0才支持Pentium 4的SSE3指令系统,同时还提供了一个ML64.EXE程序,用于支持64位指令系统。

(2)NASM

NASM(Netwide Assembler)是一款基于80x86处理器的汇编软件,可用于编写16位DOS、32位和64位Windows、Linux的汇编语言程序。1996年10月,NASM发布其最初始版本0.90;2007年11月发布NASM 2.00版,扩展了对64位操作系统的支持;2022年12月,提供NASM 2.16.01稳定版。它是一款基于简化版BSD许可证(2-clause BSD License)的开放源代码软件。更多NASM介绍,请参见附录G,也可参考其网站(https://www.nasm.us/)文档。

本书采用MASM 6.15和NASM 2.16.01,准备了汇编语言程序的控制台环境(和模拟DOS环境)开发软件(压缩)包,从机工教育网站(http://www.cmpedu.com)下载后可以直接(解压)使用(详见1.3.4节)。

3.文件路径

文件路径是操作系统中一个很重要的概念,对正确使用32位控制台环境和16位DOS环境起着关键作用,也有助于读者理解Windows文件系统。

操作系统以目录(Directory)形式管理磁盘上的文件(为了使普通用户容易理解,Windows使用“文件夹”这个通俗的说法表示专业术语“目录”)。当指明某个文件时,为了区别于同名的其他文件,有必要说明该文件所在分区、根目录、各级子目录。分区和目录就是文件的路径(Path),32位控制台和DOS环境中利用向右的斜线“\”分隔各级目录。例如,位于硬盘D分区根目录MASM的PROGS子目录下的文件EG0101.ASM表示如下:

文件的完整路径称为绝对路径。采用这种指明文件的方法保证了唯一性,但未免有些烦琐。所以,人们经常使用相对路径指明文件。采用相对路径时,首先必须明确相对的位置,即当前所在的目录,简称当前目录(Current Directory)。实际上,在闪烁的32位控制台或DOS提示符“_”前的路径就是当前目录所在位置。例如,如果D分区当前目录是根目录下的MASM目录,则上述EG0101.ASM文件可以如下指明:

再如,若上述PROGS为当前目录,则MASM目录中BIN子目录下的ML.EXE文件可以如下指明:

这里的两个小数点“..”表示当前目录的上级目录。另外,还经常使用“\”表示当前分区的根目录,用一个小数点“.”表示当前目录。

那么,32位控制台和DOS环境下如何改变当前目录呢?这就要用到内部命令CD(Change Directory)。例如,进入32位控制台或模拟DOS环境后,可以首先键入分区字母加一个冒号,从而进入所需要的当前磁盘分区,然后键入CD命令,并用空格隔开需要进入的当前目录,如下所示:

4.内部命令和外部命令

内部命令是32位控制台或DOS环境本身具有的、直接支持的命令。进入32位控制台或DOS环境后,只要键入其内部命令的关键字加上需要的参数就可以使用内部命令,例如,常用的内部命令有改变目录命令CD、文件列表命令DIR、文件复制命令COPY、清除屏幕命令CLS、退出命令EXIT等。利用帮助命令HELP可以查看所有的内部命令及其使用方法,也可以用命令加“/?”参数查询该命令的使用方法。

外部命令也是32位控制台或DOS环境提供的命令,但它与其他可执行文件一样以文件形式保存在磁盘上,存放在Windows操作系统所在目录的SYSTEM32子目录下。由于操作系统通常已经将该目录列为搜索路径,因此一般可以直接输入文件和参数执行外部命令。例如,要使用DOS平台的调试程序DEBUG.EXE,输入DEBUG即可。

但是,对于没有建立搜索路径的其他可执行文件,或者存在多个同名的可执行文件,执行时需要先键入绝对路径或相对路径,然后键入文件名,再用空格分隔键入的参数。

如果没有指明路径,32位控制台或DOS环境将在当前目录下查找该文件。如果没有找到该文件,则在事先设置的搜索路径中依次查找;如果仍然没有查找到该文件,则将显示“'XX'不是内部或外部命令,也不是可运行的程序或批处理文件”('XX'is not recognized as an internal or external command,operable program or batch file)。使用内部命令PATH可以查看和设置当前的搜索路径。所以,如果没有指明路径或者指明的路径不正确,虽然文件存在但却会提示没有该文件,或者执行另外一个同名的文件。

32位控制台和DOS都支持扩展名为EXE的可执行文件,DOS还支持扩展名为COM的可执行文件。批处理文件使用扩展名BAT,它实际上是一个纯文本文件,其中编辑有依次执行的可执行文件名,在32位控制台和DOS环境下都可以应用。如果执行外部命令时没有键入扩展名,则32位控制台或DOS环境依次以BAT、COM和EXE为扩展名,先查找到哪个文件就执行哪个文件。

5.进入MASM目录的批处理文件

执行32位控制台和DOS环境的应用程序时,通常需要首先进入相应环境,然后在提示符下输入可执行文件名。在32位Windows窗口环境下,直接运行(例如双击启动)32位控制台和DOS环境的程序,常会在屏幕上一闪而过。

为了操作方便,可以在Windows窗口环境中建立32位控制台或DOS环境,并将MASM目录(假设在D:\MASM下)作为当前目录的批处理文件WIN32.BAT,文件内容可以是:

第1行命令表示不显示下面各行信息。第2行命令设置当前WIN32.BAT文件所在的D分区MASM目录和其下的BIN子目录作为搜索路径,以便实际操作时能够执行这些目录下的文件。第3行命令执行操作系统所在根目录提供的CMD.EXE进入32位控制台窗口(并将该文件所在的目录作为当前目录)。第4行命令表示以后输入的命令将显示出来。

利用同样的方法可以建立快速进入模拟DOS,并将MASM目录作为当前目录的批处理文件DOS16.BAT,只需将上述文件中的CMD.EXE修改为COMMAND.COM。

如果希望打开的32位控制台或16位模拟DOS窗口能够使用鼠标操作,可以在其左上角单击展开控制菜单,选择其中的“属性”命令,在“选项”选项卡中,使“编辑选项”区中的“快速编辑模式”为不选中状态。这样,在这个命令行窗口,运行支持鼠标操作的程序时就可以使用鼠标操作了。 FJj0uMTrVcGD8hhVQ2T9FcdaLK949NUt0uxNRDMAE4Cb+qoBNOQD4wpW/1RcYnD9

点击中间区域
呼出菜单
上一章
目录
下一章
×