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