当前位置:文档之家› 《汇编语言》实验

《汇编语言》实验

《汇编语言》课程实验指导手册本实验指导手册旨在指导数学与软件科学学院信息与计算科学专业《汇编语言》(专业任选课)的实验教学活动过程。

其主要使用对象为本课程主讲教师和实验指导教师。

它可以作为教学过程中的教学辅助参考资料,也可以作为学生在本门课程的学习中,结合实际教学内容,完成相关实验并填写实验报告的主要依据。

具体实施过程中,除开各实验中要求的必做题目外,教师可结合实际教学情况,根据学生接受程度作适当扩展。

学生在进行实践设计活动时,也可以结合自身掌握和学习的实际情况进行有选择地实践。

本指导手册仅针对本学院信息与计算科学专业而设置。

本实验手册编写的参考书籍:1.《IBM-PC汇编语言程序设计(第2版)》,沈美明温冬婵编著,北京:清华大学出版社,2001年8月(第2版)2005年6月第14次印刷2.《80X86汇编语言程序设计教程》,杨季文等编著,北京:清华大学出版社,1998年6月(第1版)2005年8月第14次印刷引言汇编语言程序设计技术是实践性很强的课程。

实践也是学好程序设计课程中必不可少的重要环节。

程序设计的实践分两个步骤:一是设计和编写解决问题的程序算法流程,并在此基础上编写源程序代码;二是在计算机上对程序进行调试,并使程序完成问题的求解过程,进行相应的逻辑测试。

由于汇编语言固有的特点,其程序调试比一般的高级程序语言困难,为此,学习过程中,尤其注意事先做好上机准备,做到目的明确,思路清晰,调试策略完全、全面,以便更好地观察和分析汇编程序执行的技巧,并注意领会计算机工作的本质过程和步骤。

可以参阅计算机组成原理方面的参考书,帮助理解计算机的基本工作原理。

实验过程中,应当注意如下问题:(1) 上机实习的主要目的是训练汇编语言程序的上机调试能力和分析、解决调试过程中遇到的问题的能力。

并在此过程中逐步提高程序编写与问题分析能力。

而不是简单地对教材上的实例做验证式的操作;(2) 上机内容可以结合教材内容和习题,或由老师布置专门的上机习题进行;(3) 为提高上机效果。

必须在上机之前准备好上机的基本内容并编写好上机程序,尽量在上机之前先作好预先的阅读分析工作;(4) 上机调试的基本方法:语法检查(编译)==>逻辑检查(设计者检查)==>测试。

上机实验的主要步骤:(1) 了解实验目的和要求,并复习或阅读相关教材内容;(2) 根据题目要求,事先编写好程序,并经过设计者静态检查程序的语法正确性和逻辑正确性,分析可能出现的问题;(3) 设计好上机时准备测试程序的用例;(4) 上机调试通过程序,并记录上机调试中出现的问题和测试结论等,写出实验报告。

调试过程中,尤其要注意各种语法错误、逻辑错误调试经验的积累。

要注意的是,汇编语言程序的实验中,其源程序到可执行程序之间的转换过程的调试步骤一般不要求有集成环境,需要分步进行。

具体步骤如下:1) 编辑源程序(用edlin/edit/Turbo C编辑环境或其它可以编辑生成文本文件的编辑器均可);2) 将源程序汇编成2#目标文件;3) 对目标文件进行链接,形成可执行文件(.EXE/.COM);4) 执行或调试执行可执行文件。

实验报告的主要内容:(1) 实验题目;(2) 目的要求;(3) 程序说明(如程序结构、各模块的算法和数据结构等);(4) 经调试后的程序清单;(5) 测试情况说明;(6) 分析(包含没有通过的程序的原因分析)。

实验环境(软件和硬件环境):硬件环境:IBM-PC及其系列机内存256KB以上外存:硬盘或至少一个软驱CPU:80586以上显示器:单色或彩色显示器键盘:标准ASCII码键盘软件环境:编缉器:或其它编缉器汇编程序:MASM.EXE 或ASM.EXE连接程序:LINK.EXE调试程序: 或DEBUG.EXE实验报告的具体内容填写格式,参见《四川师范大学实验报告手册》格式的规定。

其中,程序清单请附着在相应的实验单元后面,程序结果、说明与分析等写在实验结果处,如不够,可另行附页。

实验一熟悉汇编程序编辑、编译、连接和执行与调试的基本方法(1学时)实验目的:(1) 熟悉汇编语言程序的基本结构;(2) 熟悉汇编程序的编辑、编译、连接与执行方法;(3) 熟悉汇编程序的调试执行过程。

实验内容:1.完成并熟悉一个简单汇编语言程序的编辑、编译、连接、运行过程,直到程序输出结果正确;2.熟悉基本的DEBUG命令的使用方法;3.可参考的程序实例如下(也可以参考教材范例):(0100-0118);source:hello.asm;function:display a string;data segmentDSEG SEGMENTMESSAGE DB ‘This is my first program!’, 0DH, 0AH, 24H DSEG ENDS;code segmentCSEG SEGMENTASSUME CS:CSEG, DS:DESGBEGINMOV AX,DSEGMOV DS,AXMOV DX,OFFSET MESSAGEMOV AH,9INT 21HMOV AH,4CHINT 21HCSEGENDSEND BEGIN实验准备:(1) 计算机设备;(2) 程序调试环境的准备(熟悉汇编语言的基本结构,汇编语言的编译、连接等过程和方法,调式环境DEBUG的基本使用方法);(3) 实验源程序准备。

实验步骤:(1) 工作环境准备(安装、复制MASM),如果已经准备好,则可以跳过此步;(2) 用或其它编辑软件输入源程序代码;(3) 在DOS界面上进行汇编,有条件的也可以在集成环境下进行;(4) 对汇编结果文件(2#.OBJ文件)进行连接;(5) 执行可执行文件,观察并记录执行结果信息;(6) 熟悉DEBUG的基本使用方法;(7) 编写实验报告。

实验结果:(1) 对基于MASM的程序调试环境、方法和步骤进行总结;(2) 给出汇编程序的基本结构和实验程序实例的执行逻辑和结果;(3) 给出DEBUG的基本使用方法。

实验二设计并跟踪调试简单汇编程序(1学时)实验目的:(1) 熟悉汇编程序解决实际问题的程序编写方法;(2)进一步熟练掌握编译、连接和DEBUG调试程序的方法。

实验内容:1. 汇编语言程序设计方法。

主要实验实例:(1) 设计并实现一个1+2+…+20的程序,并上机实现之(或根据实际情况布置相应的问题进行设计);(2) 显示一个“Hello,How are you?”的汇编程序。

(0100-0111)2. DEBUG的基本使用。

(参见后面的DEBUG使用资料)(1) 启动和退出方法;(2) 各种命令的使用方法。

实验准备:汇编语言程序设计方法,DEBUG的基本使用。

实验步骤:(1) 选择实验问题;(2) 设计汇编语言的程序代码,并进行阅读、分析;(3) 上机调试进行测试并做测试记录;(4) 全面熟悉DEBUG的常用命令的使用方法,并作简要记录;(5) 编写实验报告。

实验结果:(1) 根据实验题目的程序测试,写出测试报告;(2)写出关于DEBUG常用命令使用方法的测试报告和说明;(3)测试结果和汇编程序代码清单。

实验三利用汇编指令完成简单程序设计(1学时)实验目的:(1)熟悉用数据段进行数据临时存储和数据移动的方法;(2) 熟悉汇编语言中的数据传送、逻辑运算等指令。

实验内容:(第1题必做,2和3任选其一)主要实验实例:1.利用DEBUG工具测试和掌握教材习题中的各种指令在各种寻址方式下的使用方法和结果;2. 利用教材3.19题进行单步执行,观察并记录寄存器中的CF、SF、OF和ZF等标志位的变化规律;3. 编写程序完成将存放在附加段中的数组数据移动到数据段中的程序。

实验准备:认真阅读和复制教材相关内容和课后习题。

实验步骤:(1)对第1题,先分析各种寻址实例,并预测其可能的执行结果;(2) 对2和3题任选其一,进行汇编程序设计,然后,上机测试和分析;(3) 编写实验报告。

实验结果:(1) 根据测试目标写出测试报告;(2) 测试结果分析说明;(3) 测试程序代码清单。

实验四利用汇编语言环境进行顺序程序设计(1学时)实验目的:运用汇编指令系统完成顺序程序设计问题的求解。

实验内容:(第1题中任选其一,2、3、4、5中任选其一)主要实验实例:1.写出执行以下功能的汇编语言程序:(1) Z←W+(Z-X)(2) Z←W-(X+6)-(R+9)(3) Z←(W*X)/(Y+6),R←余数(4) Z←((W-X)/5*Y)*2其中,X,Y,Z,R,W均为存放16位带符号数单元的地址。

2.试写出对存放在DX和AX中双字长数,求补的指令序列3.试编写程序,求出双字长的绝对值。

该数存放在A和A+2单元中。

要求结果存放在B和B+2单元中。

4.设X和Y均为16位无符号数,试写程序求表达式16X+Y的值,要求将结果存放在存储单元Z处。

5.试编写一个将压缩BCD码转换为10#数字表示的ASCII码的程序。

对BCD码和转换后的ASCII码,要求分别存放在数据段中BCD和ASCII起始的存储单元中。

实验准备:复习顺序程序设计的基本方法和计算机进行问题求解的基本步骤。

实验步骤:(1) 完成源程序设计任务,并准备好测试用例,分析其可能的测试结果;(2) 上机运行和测试所写的程序;(3) 进行实验分析;(4) 编写实验报告。

实验结果:(1) 根据测试目标写出测试报告;(2) 测试结果分析说明;(3) 测试程序代码清单。

实验五利用汇编语言进行分支程序设计(4学时)实验目的:主要掌握汇编语言分支程序设计技术。

重点掌握分支程序设计中的条件判断和准备等技巧。

实验内容:(任选其二)主要实验实例:1.比较AX、BX和CX(或三个从BUFF位置连续的数据)中带符号的数据,将大者存放于AX中,小者存放于CX,中者存放于BX。

2. 试编写一个将16#数转换为对应ASCII码的程序。

3. 试编写一个统计学生成绩的程序。

分别统计分数在60分以下的,60-69段,70-79段,80-89段,90-99段和100段的人数,并分别将它们存放在RESULT开始的存储单元中。

实验准备:汇编语言条件判断和转移指令知识,分支程序设计的基本方法。

实验步骤:(1) 完成源程序设计任务,并准备好测试用例,分析其可能的测试结果;(2) 上机运行和测试所写的程序;(3) 进行实验分析;(4) 编写实验报告。

实验结果:(1) 根据测试目标写出测试报告;(2) 测试结果分析说明;(3) 测试程序代码清单。

实验六汇编语言中的循环程序设计(4学时)实验目的:掌握循环程序设计的基本方法。

主要掌握几种基本的循环程序设计技巧,如计数法程序设计、当循环、直到循环等程序设计技术。

实验内容:(任选其二)主要实验实例:1.用多种循环方法实现1+2+3+…+20的程序(至少二种方法);2.将寄存器AX中的2#数用16#形式显示出来;3.将内存中的数据块中(BUFF为起始地址)奇数和偶数分别存入以ADDR1和ADDR2开始的存储块中,并分别统计其中的奇、偶数,将统计结果存放在RESULT 开始的两个字存储单元中;4.不利用乘法指令实现乘法的程序;5.对在附加段中的首地址为LIST的字数组进行从大到小的排序;6.对给定数组和给定数,编制程序来确定数组中是否有给定数的值,如有则从数组中删除之;7.对给定数组和给定数(设数组是有序数组),试将给定数插入给定数组中相应位置。

相关主题