汇编语言程序设计综合实验报告.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE 第PAGE 2页/共 NUMPAGES 14页 姓名 姓名 学号 班级 成绩 《汇编语言程序设计》 实验报告 实验名综合实验程序设计 实验室 实验日期 2010-12-15 一、实验目的及要求 1.悉debug命令,学习汇编语言的调试环境; 2.熟练撑握一些简单程序的调试,理解基本的顺序结构、分支结构、循环结构及子程序的调试过程; 3.通过对一些综合程序的调试,加深对各种结构程序的理与学习掌握汇给语言编程思想。 二、实验环境 硬件环境:一台微型计算机; 软件环境:windows xp,debug环境,masm。 三、实验内容 人名排序程序。先从终端键入最多30个人名,当所有人名都进入后,按字母上升的次序排序,并在屏幕上显示已经排好序的人名。 四、设计: 设计思想:通过运用计算机汇编语言指令系统,将我们所要表达的语言转换成机器指令,任其识别。 这是一个在使用子程序为主的基础上,综合应用顺序结构、循环结构和分支等结构的程序,以实现从键盘终端输入的人名按字母上升的次序排序。它们的过程和功能如下: 1.B10READ 接收键入的人名存放在NAMEPAR中,并用空格符清除其后的单元; 2.D10STOR 把人名从NAMEPAR 传送到NAMETAB中,并用NAMECTR计数; 3.G10SORT 用气泡排序算法对人名排序,并用SWAPPED作为交换的标志控制循环结束。其中用调用子程序H10XCHG来交换两个人名串的位置,并设置SWAPPED标志。 4.K10DISP 显示已经排序好了的人名。 人名排序的程序实现图1: 输入人名个数 输入人名个数≤1? 人名排序(g10sort) 显示已经排序了的人名 K10disp 结束 开始 初始化(Nametab) 首地址及方向标志 接收一个人名 B10read 人名输入完了吗? 人名存入Nametab d10stor N Y Y N 图1 五、调试与测试 1.由于masm5程序安装于D,改变工作目录于D盘环境下; 2.用MASM程序把ASM文件转换成OBJ文件; 3.用LINK程序把OBJ文件转换成EXE文件; 4.用DEBUG 命令调试程序; 5.用U命令返汇编; 6.用单步执行命令t,逐步实现数据段及代码段的初始化; 7.将数据据段的地址赋给DI指针寄存器,并用单步执行命令T按顺序执行程序的下一步指令,调用地址为0039的程序段b10read程序段,为实现名字的输入与输出操作; 8.用u命令返汇编,找出将要执行的程序段,用g命令一步执行地址为0039到0047 之间和程序段,显示数据段中messg1的内容即字符串Name?; 9.继续返汇编,执行程序段0047到0041完成第一个名字的输入,输入名字zhanglina,ret返回到DOS系统下,程序在调用前的地址,用T命令继续下一条指令,比较输入字符和长度和0的大小; 10.若相等,则跳到a30程序段,执行无字符输入时的程序。由于输入的字符个数为9(从数据段DS中的0001单元可以得到),然后比较所输入的名字的个数与所设的名字的最多个数30的大小; 11.由于输入名字的个数为9小于最大字符串长度30,调用d10store程序段对输入的字符个数进行计数; 12.无条件跳转到a20loop程序段; 13.继续调用b10read程序段,实现名字的继续输入; 14.返汇编输入下一个名字yingtianzi; 15.同样进行字符串长度10(即DS:0001=0A)与0的比较,根据所输入的字符串再选择相应和操作; 16.比较所输入的名字的个数,是否达到所设的名字最大个数字30; 17.对所输入的名字操作完成之后,调用程序段对所输d10stor入的名字进行计数; 18.继续调用输入名字程序段b10read,名字未输完,继续输入名字; 19.用G命令一步执行输入名字为:duanxiangxiang,并将最终的结果显示出来; 20.比较所输入字符串的长度,是否为0,若不为0,则进行字符个数的比较;字符串的长度为0,则执行无字符输入时的程序段,由数据段得知所输入的字符串长度为14。 21.由于所输入的字符串长度不为0,则进行比较所输入的名字的个数是否达到所设的最大个数30;由数据段所得已经有两个名字被计数; 22. 继续调用d10stor程序段进行名字个数的计数。 23.调用b10read程序段,输入并显示字符串; 24.循环多次输入字符串,即输入多个人名字; 25.用D命令查看所输入的字符串; 26

文档评论(0)

138****4229 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档