1、1汇编语言程序设计实验指导书适用于计科专业 2004 级前 言汇编语言实验主要使学生掌握 DEBUG 调试程序中各命令的使用方法,掌握 MASM 汇编程序对汇编语言源程序进行编辑、汇编、连接、装配、调试到运行的上机操作方法。本实验大纲要求学生熟练掌握汇编语言指令练习、顺序程序设计、分支程序设计、循环程序设计和子程序设计。一、 实验环境汇编语言程序设计的实验环境如下:1. 硬件环境微型计算机(Intel x86 系列 CPU)一台2. 软件环境Windows98/2000/XP 操作系统任意一种文本编辑器(EDIT、NOTEPAD(记事本) 、UltraEDIT 等)汇编程序(MASM.EXE
2、或 TASM.EXE)连接程序(LINK.EXE 或 TLINK.EXE)调试程序(DEBUG.EXE 或 TD.EXE)文本编辑器建议使用 EDIT 或 NOTEPAD,汇编程序建议使用 MASM.EXE,连接程序建议使用 LINK.EXE,调试程序建议使用 TD.EXE。二、 上机实验步骤1确定源程序的存放目录建议源程序存放的目录名为 ASM(或 MASM) ,并放在 C 盘或 D 盘的根目录下。2建立 ASM 源程序建立 ASM 源程序可以使用 EDIT 或 NOTEPAD(记事本)文本编辑器。2注意,汇编语言源程序文件的扩展名最好起名为.ASM,这样能给后面的汇编和连接操作带来很大的方
3、便。3用 MASM.EXE 汇编源程序产生 OBJ 目标文件源文件 HELLO.ASM 建立后,要使用汇编程序对源程序文件汇编,汇编后产生二进制的目标文件(.OBJ 文件) 。具体操作如下:方法一:在 Windows 中操作用资源管理器打开源程序目录 C:ASM,把 HELLO.ASM 拖到 MASM.EXE 程序图标上。方法二:在 DOS 命令提示符窗口中操作选择“开始”“程序”“附件”“命令提示符” ,打开 DOS 命令提示符窗口,然后用 CD 命令转到源程序目录下,接着输入 MASM 命令:D:C: C:CD ASMC:ASMMASM HELLO.ASM操作时的屏幕显示如图 1 所示。图
4、 1 在 DOS 命令提示符窗口中进行汇编不管用以上二个方法中的哪个方法,进入 MASM 程序后,都会提示让你输入目标文件名(Object filename) ,并在方括号中显示默认的目标文件名,建议输入目标文件的完整路径名,如:C:ASMHELLO.OBJ回车 。后面的两个提示为可选项,直接按回车。注意,若打开 MASM 程序时未给出源程序名,则 MASM 程序会首先提示让你输入源程序文件名(Source filename) ,此时输入源程序文件名 HELLO.ASM 并回车,然后进行的操作与上面完全相同。3图 2 有错误的汇编过程例子如果没有错误,MASM 就会在当前目录下建立一个 HEL
5、LO.OBJ 文件(名字与源文件名相同,只是扩展名不同) 。如果源文件有错误,MASM 会指出错误的行号和错误的原因。图 2 是在汇编过程中检查出两个错误的例子。在这个例子中,可以看到源程序的错误类型有两类:警告错误(Warning Errors)。警告错误不影响程序的运行,但可能会得出错误的结果。此例中无警告错误。严重错误(Severe Errors)。对于严重错误,MASM 将无法生成 OBJ 文件。此例中有两个严重错误。在错误信息中,园括号里的数字为有错误的行号(在此例中,两个错误分别出现在第 6 行和第 9 行) ,后面给出了错误类型及具体错误原因。如果出现了严重错误,你必须重新进入
6、EDIT 编辑器,根据错误的行号和错误原因来改正源程序中的错误,直到汇编没有错为止。注意,汇编程序只能指出程序的语法错误,而无法指出程序逻辑的错误。4用 LINK.EXE 产生 EXE 可执行文件在上一步骤中,汇编程序产生的是二进制目标文件(OBJ 文件) ,并不是可执行文件,要想使我们编制的程序能够运行,还必须用连接程序(LINK.EXE)把 OBJ 文件转换为可执行的 EXE 文件。具体操作如下: 方法一:在 Windows 中操作用资源管理器打开源程序目录 C:ASM,把 HELLO.OBJ 拖到 LINK.EXE 程序图标上。方法二:在 DOS 命令提示符窗口中操作4选择“开始”“程序
7、”“附件”“命令提示符” ,打开 DOS 命令提示符窗口,然后用 CD 命令转到源程序目录下,接着输入 LINK 命令:D:C: C:CD ASMC:ASMLINK HELLO.OBJ操作时的屏幕显示如图 3 所示。图 3 把 OBJ 文件连接成可执行文件不管用以上二个方法中的哪个方法,进入 LINK 程序后,都会提示让你输入可执行文件名(Run file) ,并在方括号中显示默认的可执行文件名,建议输入可执行文件的完整路径名,如:C:ASMHELLO.EXE回车 。后面的两个提示为可选项,直接按回车。注意,若打开 LINK 程序时未给出 OBJ 文件名,则 LINK 程序会首先提示让你输入
8、OBJ 文件名(Object Modules) ,此时输入 OBJ 文件名 HELLO.OBJ 并回车,然后进行的操作与上面完全相同。如果没有错误,LINK 就会建立一个 HELLO.EXE 文件。如果 OBJ 文件有错误,LINK 会指出错误的原因。对于无堆栈警告(Warning:NO STACK segment)信息,可以不予理睬,它不影响程序的执行。如链接时有其它错误。须检查修改源程序,重新汇编、连接,直到正确。5执行程序建立了 HELLO.EXE 文件后,就可以直接在 DOS 下运行此程序,如下所示:C:HELLO回车C:程序运行结束后,返回 DOS。如果运行结果正确,那么程序运行结束
9、时结果会直接显示在屏幕上。如果程序不显示结果,我们如何知道程序是否正确呢?例如,这里的5HELLO.EXE 程序并未显示出结果,所以我们不知道程序执行的结果是否正确。这时,我们就要使用 TD.EXE 或 DEBUG 调试工具来查看运行结果。此外,大部分程序必须经过调试阶段才能纠正程序执行中的错误,调试程序时也要使用 TD.EXE 或 DEBUG。三、实验项目实验一 汇编语言实验操作方法(3 学时) (一) 验目的及要求1 熟悉汇编语言的工作环境。2 通过一个简单的程序,了解如何汇编、连接和运行一个汇编语言程序。3 了解 DEBUG 调试程序中常用命令的使用方法。4 通过运行简单的汇编语言程序
10、,初步了解汇编语言源程序的特点。5 按照要求书写实验报告。 (二)实验内容使用编辑程序,输入教材 146 页例 4.30 程序或IBM-PC 汇编语言程序设计实验教程中的例 1.1 程序后进行汇编、连接和运行,并使用 DEBUG 中的各种命令进行调试。(三)实验准备1 认真阅读本实验指导。2 预习教材 146 页第四章第四小节的内容。3 预习IBM-PC 汇编语言程序设计实验教程中附录五的内容。实验二 汇编语言指令练习(3 学时) (一)实验目的及要求1 熟悉汇编语言中的数据传送、算术运算等指令。2 了解指令不同的寻址方式,注意规定或限制使用的寄存器。如:双操作数指令中,源操作数和目的操作数的
11、地址不能同时为存储器地址,段跨越前缀不能使用 CS,操作对象是地址还是地址中的内容,指令隐含使用的寄存器等。3 使用 DEBUG 中的相关命令调试程序及查看结果。4 按照要求书写实验报告。(二) 实验内容基本题:编写一个完整的程序放在代码段中,要求把数据段中的 AUGEND 和附加段中的 ADDEND 相加,并把结果存放在数据段中的 SUM 中。其中 AUGEND、ADDEND、SUM 均为双精度数。6选做题:.(三) 实验准备1认真阅读本实验指导。2按实验内容要求,理解相关指令,编写程序。实验三 顺序程序设计(2 学时) (一)实验目的及要求1掌握汇编语言程序设计的基本步骤,分析问题,确立算
12、法,画出程序流程图.说明流程图中各功能的含义和表示法。分配工作单元和存储空间。根据程序算法流程选择合适的指令编制汇编语言源程序。本实验着重掌握顺序程序的设计基本方法和技巧。 2程序要结构化:简明、易读和易调试;执行速度较快;占用存储空间较少。3使用 DEBUG 中的相关命令调试程序及查看结果。4按照要求书写实验报告。(二)实验内容基本题:编一段程序,在内存中自 SQTAB 地址开始的连续 10 个单元中存放 0-9 的平方值。要求利用简单的查表法 NUM 单元中指定数(0-9)的平方值,并将所求平方值存入RESULT 单元。选做题:.(三)实验准备1认真阅读本实验指导。2按实验内容要求,确定算法,画流程图,编写程序。实验四 (一)实验目的及要求.(二)实验内容 .(三)实验准备7.