1、汇编语言程序设计实验汇编语言程序设计实验报告班级 姓名 学号 汇编语言程序设计实验一、实验教学目标与基本要求 汇编语言实验主要使学生掌握DEBUG调用程序中各命令的使用方法,掌握MASM汇编程序对汇编语言源程序进行编辑、汇编、连接、装配、调试到运行的上机操作方法.要求学生熟练掌握汇编语言指令练习、顺序程序设计、分支程序设计、循环程序设计、子程序设计和中断程序设计.1. DEBUG命令与环境2. 汇编语言实验操作方法3. 汇编语言指令练习4. 顺序程序设计5. 分支程序设计6. 循环程序设计7. 子程序设计8. 中断程序设计二、实验课程内容实验一 DEBUG(用于测试和调试MS-DOS可执行文件
2、的程序)命令的使用(1学时)除了q命令之外,所有Debug命令都接受参数.可以用逗号或空格分隔参数,但是只有在两个十六进制值之间才需要这些分隔符.实验目的:掌握DEBUG中各命令的使用方法;掌握在DEBUG命令使用后观察内存单元、寄存器、标志位的内容及意义;学会使用DEBUG来调试程序.实验内容:使用以下DEBUG命令,观察并记录结果(所留空间不够,可以附页).1.程序调用命令CDEBUG D: PATH FILENAME.EXT PARM1 PARM2其中,文件名是被调试文件的名字.如未键入文件名.可用DEBUG命令N和L把需要文件装入存储器后再调试.D指定驱动器,PATH为路径,FILEN
3、AME为文件名,PARM为命令参数2.显示存储单元命令-D ADDRESS或 ;ADDRESS 地址-D RANGE ;RANGE 范围3.修改存储单元内容命令 -E ADDRESS LIST4.检查和修改寄存器内容命令-R REGISTER NAME ;Register name 寄存器名字5.汇编命令-A ADDRESS6.跟踪命令-T =ADDRESS VALUE ;Value 变量值7.运行命令-G =ADDRESS ADDRESS2 ADDRESS38.反汇编命令-U ADDRESS-U RANGE9.命名命令-N FILESPECS FILESPECSFILESPECS的格式可为D
4、:PATHFILENAME .EXT10.装入命令-L ADDRESSDRIVE SECTOR SECTOR ;DRIVE SECTOR 磁盘 扇区11.写命令W ADDRESS DRIVE SECTOR12.退出命令-Q实验二 汇编语言实验操作方法 (1学时)实验目的:掌握在DEBUG下运行汇编指令或简单小程序;熟悉标准汇编程序上机流程.实验内容:设计实验使用数据,分析得出理论结果;记录实验结果,与理论结果比较.(所留空间不够,可以附页)1在DEBUG下运行汇编指令或简单小程序(如:实现1+2;0F3A6+0FFFB等)在DEBUG提示符下,用汇编命令A:输入汇编指令或简单小程序,用单步命令
5、T或全程命令G来执行,并检查执行中间结果与最后结果.2标准汇编程序上机方法 (如:给出一个AL*7的程序,用加法及移位指令实现) A.建立ASM文件,用EDIT .COM全屏幕编辑文件或其他编辑文件建立扩展名为ASM的源程序.B.用MASM(或ASM)产生扩展名为OBJ目标文件.C用LINK产生扩展名为EXE可执行文件.D在DEBUG下,把文件调入内存,调试程序.E在DOS下可直接执行扩展名为EXE的文件. 附:汇编语言的工作环境.A. 硬件环境IBM-PC及其系列机内存256K字节以上外存:硬盘或至少一个软驱CPU:80586以上显示器:单色或彩色显示器键盘:标准ASCII码键盘B.软件环境
6、编缉程序:EDIT.COM或其他编缉程序汇编程序:MASM.EXE 或ASM.EXE连接程序:LINK.EXE调试程序:DEBUG.COM 或DEBUG.EXE 实验三 汇编语言指令练习 (2学时)实验目的:1.掌握DEBUG中汇编命令A,反汇编命令U,单步命令T,显示存储单元命令D,修改存储器单元命令E,修改与显示寄存器单元命令R,退出Q等命令的用法.2.熟悉汇编中传送、逻辑等指令.3.了解指令不同的寻址方式,注意规定或限制使用的寄存器如:双操作数指令中,源操作数和目的操作数的地址不能同时为存储器地址,段跨越前缀不能使用CS,操作对象是地址还是地址中的内容,指令隐含使用的寄存器.实验内容:对
7、DEBUG中A,U,T,D,E,R,Q等命令按不同用法进行练习;汇编中传送、逻辑等指令.1:基本题: MOV.PUSH.POP.AND.OR.XOR.TEXT.ADD.SUB.MUL.DIV. 2:掌握题:在DEBUG状态下把三个数从大到小排序.3:实验步骤A.在DOS提示符下,在MASM子目录下,按DEBUG及回车.B.在DEBUG提示符下,按A进入小汇编,输入源指令.C.用U反汇编,检查输入源指令是否正确,用T或G,调试与运行指令.D.检查指令运行结果,用E,R检查与修改内存、寄存器内容.E.重复B.C.D过程.实验准备:按实验内容要求,理解指令功能,编写不同寻址方式的指令清单.实验报告:
8、(所留空间不够,可以附页)1.实验目的,要求,内容及算法思想.2.指令的寻址方式,注意规定或限制使用的寄存器.3.指令清单.4.实验心得.实验四 顺序程序设计 (2学时)实验目的:掌握汇编语言程序设计的基本步骤,分析问题,确立算法,画出程序流程图.说明流程图中各功能的含义和表示法.分配工作单元和存储空间.根据程序算法流程选择合适的指令编制汇编语言源程序.本实验着重掌握顺序程序的设计基本方法和技巧.实验要求:1程序要结构化:简明、易读和易调试2执行速度较快3占用存储空间较少实验内容:1:按实验内容要求,确定算法,画流程图,编写程序2:基本题:计算表达式的值: =(v-(*+-540)/x3:掌握
9、题:将一字节压缩BCD码转换为二个ASCII码.实验步骤:1.首先进入EDIT.COM编辑器,输入源程序,检查正确后,用MASM汇编成目标文件,用LINK.COM连接成可运行文件,若正确无误,则用DEBUG调入内存,进行调试.2.调试与运行程序:用单步,短点,连续等方法调试与运行程,根据存储器,寄存器与标志位的内容与变化,如:SP,IP,CF,SF,ZF,OF,I等,检查指令执行结果,程序中间结果及程序运行最后结果是否正确,排除软件错误,直到达到本实验目的为止. 3.记录程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.实验报告: (所留空间不够,可以附页)1.目的,要求
10、,内容及算法思想.2.程序流程图,程序清单,重要部位说明.如:重要的指令功能,重要的程序段功能.3.程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.4.实验心得及有意义的建议.实验五 分支程序设计 (4学时)实验目的:掌握分支程序设计的原理和方法,重点掌握各种分支程序中形成判断条件而产生的程序段的设计方法和技巧. 实验要求:1.如何产生条件 2.如何对条件进行判断 3.如何实现分支实验内容:1.按实验内容要求,确定算法,画流程图,编写程序2.基本题: 计算函数值: Y=1 X0Y=0 X=0 Y=-1 X03.掌握题: 多路分支,假定将各分支程序进行编号,若存在0,1,
11、N的N1个分支程序.现根据当前的编号,转入到相应的分支程序.若各分支程序的入口地址分别为:ADDR0,ADDR1,ADDRN.实验步骤:1.首先进入EDIT.COM编辑器,输入源程序,检查正确后,用MASM汇编成目标文件,用LINK.COM连接成可运行文件,若正确无误,则用DEBUG调入内存,进行调试.2.调试与运行程序:用单步,短点,连续等方法调试与运行程序,根据存储器,寄存器与标志位的内容与变化,如:SP,IP,CF,SF,ZF,OF,I等,检查指令结果,程序中间结果及程序运行最后结果是否正确,排除软件错误,直到达到本实验目的为止.3.记录程序入口参数与出口参数,重要的指令结果,程序中间结
12、果及程序运行最后结果. 实验报告:(所留空间不够,可以附页)1.实验目的,要求,内容及算法思想.2.程序流程图,程序清单,重要部位说明.如:重要的指令功能,重要的程序段功能.3.程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.4.实验心得及有意义的建议.实验六 循环程序设计 (4学时)实验目的:掌握循环程序设计的原理和方法,重点掌握循环程序结构的形式和常用循环程序的控制方法和技巧.实验要求:1.置循环参数的初值2.循环体构成3.如何实现循环控制实验内容:1.按实验内容要求,确定算法,画流程图,编写程序2.基本题: 统计某地址中正元素的个数3.掌握题:把BX寄存器内的二进
13、制数用十六进制数的形式在屏幕上显示出来;假定给出4名学生5门课的成绩,计算每个学生的平均成绩和每门课的平均成绩;冒泡排序.A.认真阅读本实验指导实验步骤:1.首先进入EDIT.COM编辑器,输入源程序,检查正确后,用MASM汇编成目标文件,用LINK.COM连接成可运行文件,若正确无误,则用DEBUG调入内存,进行调试.2.调试与运行程序:用单步,短点,连续等方法调试与运行程序,根据存储器,寄存器与标志位的内容与变化,如:SP,IP,CF,SF,ZF,OF,I等,检查指令结果,程序中间结果及程序运行最后结果是否正确,排除软件错误,直到达到本实验目的为止.3.记录程序入口参数与出口参数,重要的指
14、令结果,程序中间结果及程序运行最后结果.实验报告:(所留空间不够,可以附页)1.目的,要求,内容及算法思想.2.程序流程图,程序清单,重要部位说明.如:重要的指令功能,重要的程序段功能.3.程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.4.实验心得及有意义的建议.实验七 子程序设计 (2学时)实验目的:掌握子程序设计的原理和方法,重点掌握子程序结构的形式和常用子程序的控制方法和技巧.采用子程序设计以增加程序的可读性,有利于程序的模块化和自顶向下的设计方法的实现.实验要求:1.子程序定义及相对应的调用方法.2.子程序设计时需建立子程序的功能说明.3.子程序现场保护和现场
15、恢复.4.子程序的输入参数和输出参数的确定及传递方法,可利用寄存器,内存或堆栈传递参数.5.子程序嵌套调用时,注意任何存放断点和寻找短点进行返回.6.掌握常用DOS系统功能子程序的调用.实验内容:1.按实验内容要求,确定算法,画流程图,编写程序.2.基本题:十进制数到十六进制数转化程序.程序要求从键盘取得一个十进制数,然后以十六进制形式在屏幕上显示出来.3.掌握题: 在屏幕上显示4行“hello!what is your name?”,要求用子程序调用的方法实现;计算N! (N0)的程序实验步骤:1.首先进入EDIT.COM编辑器,输入源程序,检查正确后,用MASM汇编成目标文件,用LINK.
16、COM连接成可运行文件,若正确无误,则用DEBUG调入内存,进行调试.2.调试与运行程序:用单步,短点,连续等方法调试与运行程序,根据存储器,寄存器与标志位的内容与变化,如:SP,IP,CF,SF,ZF,OF,I等,检查指令结果,程序中间结果及程序运行最后结果是否正确,排除软件错误,直到达到本实验目的为止.3.记录程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.实验报告:(所留空间不够,可以附页)1.目的,要求,内容及算法思想.2.程序流程图,程序清单,重要部位说明.如:重要的指令功能,重要的程序段功能.3.程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行
17、最后结果.4.实验心得及有意义的建议.实验八 中断程序设计 (2学时)实验目的:掌握软中断程序设计的原理和方法,重点掌握软中断程序入口、出口地址的产生。实验要求:1. 软中断程序的定义及相对应的调用方法.2. 软中断程序现场保护和现场恢复.实验内容:1.按实验内容要求,确定算法,画流程图,编写程序.2.基本题: 在屏幕上显示4行“hello!what is your name?”,要求用软中断程序的方法实现;假定给出4名学生5门课的成绩,计算每个学生的平均成绩和每门课的平均成绩,要求用软中断程序的方法实现实验步骤:1.首先进入EDIT.COM编辑器,输入源程序,检查正确后,用MASM汇编成目标
18、文件,用LINK.COM连接成可运行文件,若正确无误,则用DEBUG调入内存,进行调试.2.调试与运行程序:用单步,短点,连续等方法调试与运行程序,根据存储器,寄存器与标志位的内容与变化,如:SP,IP,CF,SF,ZF,OF,I等,检查指令结果,程序中间结果及程序运行最后结果是否正确,排除软件错误,直到达到本实验目的为止.3.记录程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.实验报告:(所留空间不够,可以附页)1.目的,要求,内容及算法思想.2.程序流程图,程序清单,重要部位说明.如:重要的指令功能,重要的程序段功能.3.程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.4.实验心得及有意义的建议.