您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 字符串匹配汇编语言程序设计
学号:课程设计题目字符串匹配汇编语言程序设计学院自动化学院班级电气1003班姓名申廷进指导教师徐腊梅2013年01月17日武汉理工大学《微机原理与接口技术》课程设计说明书课程设计任务书学生姓名:申廷进专业班级:电气1003班指导教师:徐腊梅工作单位:自动化学院题目:字符串匹配汇编语言程序设计要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1)根据提示信息,从字符输入两个字符串,实现两个字符串的比较,如果两个字符串的字符只要有一个相同则显示“MATCH”,否则显示“NOMATCH”。2)可连续输入字符进行比较,直至单击“Q”或“q”键退出程序。时间安排:1.9课设题目,设计内容;1.9—1.10查资料,算法、方案设计。1.10—1.13(硬)软件设计1.14—1.15调试程序1.16—1.17写课设报告1.18答辩指导教师签名:年月日系主任(或责任教师)签名:年月日武汉理工大学《微机原理与接口技术》课程设计说明书目录1设计总体方案....................................................21.1设计目的...................................................21.2设计要求及其条件...........................................21.3设计方案...................................................22程序流程图分析..................................................32.1转移流程图的分析...........................................32.2流程图总体分析.............................................33程序段落的说明..................................................53.1换行回车键的定义...........................................53.2提示信息和字符串的定义.....................................53.3DOS功能和部分指令的说明...................................64程序调试说明、结果记录与分析....................................74.1程序调试说明...............................................74.2调试结果说明...............................................74.3分析结果...................................................95心得体会..........................................................9参考文献..........................................................11附件..............................................................12武汉理工大学《微机原理与接口技术》课程设计说明书1摘要微型计算机简称微机,由于其具备人脑的某些功能,所以也称其为微电脑。是由大规模集成电路组成的、体积较小的电子计算机。它是以微处理器为基础,配以内存储器及输入输出接口电路和相应的辅助电路而构成的裸机。把微型计算机集成在一个芯片上即构成单片微型计算机。学习微机课程,主要内容包括微型计算机体系结构、8086微处理器和指令系统、汇编语言、设计以及微型计算机各个组成部分,而汇编语言是其中一大板块。汇编语言编程不仅具有计算机提供给用户的最快而又最有效的语言的优势,也可以在不很了解计算机硬件的前提下使用它。在对于程序的空间和时间要求很高的场合,使用汇编语言是必不可少,甚至对于很多需要直接控制硬件的应用场合,用保护模式下的汇编语言编程也提供给了对硬件不了解的初学者一种方法。关键词:微机汇编语言编程武汉理工大学《微机原理与接口技术》课程设计说明书2字符串匹配汇编语言程序设计1设计总体方案1.1设计目的1)进一步建立微机系统的概念,加深对系统的理解和认识,培养学生应用微型计算机解决实际问题的能力;2)进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的编写,提高编写汇编语言程序的水平和学习程序调试方法。3)掌握提示信息的使用方法及键盘输入信息的用法。1.2设计要求及其条件课程设计要求:3)根据提示信息,从字符输入两个字符串,实现两个字符串的比较,如果两个字符串的字符只要有一个相同则显示“MATCH”,否则显示“NOMATCH”。4)可连续输入字符进行比较,直至单击“Q”或“q”键退出程序。设计初始条件:1)采用16位微处理器8086CPU以及86系列微型计算机的指令系统。2)软件设计平台可使用EMU8086软件。1.3设计方案本次课设主要是比较两个字符串中有没有相同的字符,如果有就显示“MATCH”,如果没有相同则显示“NOMATCH”。开始调用DOS的9号功能显示提示信息,格式是MOVDX,字符偏移地址,MOVAH,09H,INT21H,然后调用DOS的8号功能从键盘输入字符,格式是MOVAH,08H,INT21H。本程序涉及到顺序、武汉理工大学《微机原理与接口技术》课程设计说明书3转移等基本程序,最后程序编写好以后从键盘输入两个字符串然后可进行多次比较,直到按Q或q退出程序,我在网上搜索到一些资料跟着资料慢慢编写程序直到程序没有错误。2程序流程图分析由方案设计分析可知,此次设计比较简单,先初始化程序,然后根据提示输入两个字符串,然后进行循环比较。在循环的过程中,当按下Q或q键时退出程序;当按下其它键时,程序继续运行。流程图设计:当初始化后,根据提示输入两个字符串,若有输入判断是否为Q或q键,如果是则退出程序,程序结束,如果否则进行两字符串比较,过程比较明了,流程图分支不多,但功能能够很好的实现,流程图如图2-1所示。2.1转移流程图的分析本流程图有三处转移,第一处是在初始化程序后面要判断退不退出程序,提示是如果你要退出就按Q或q,不退出就按任意键继续执行程序。如图2-2所示图2-2退出提示另一处转移是判断两字符串是否有相等的字符,如果有则显示“MATCH”,如果不等且字符串1还没有比较完则转移到字符串偏移地址加1程序前继续执行程序,直到字符串1比较完成。最后一处转移是判断字符串中的字符是否比较完了,如果比较完了则显示“NOMATCH”,如果没有比较完则转移到SI指向字符串的下一个字符继续执行程序直到字符串1的字符比较完。2.2流程图总体分析有图2-1流程图可以看出此流程图比较简洁,可以清楚的看出整个程序的运武汉理工大学《微机原理与接口技术》课程设计说明书4行状况。开始段寄存器堆栈初始化是否退出程序显示输入字符串INT21H的0A号子功能接收键入的字符串指针SI指向字符串1是否相等?SI指向字符串1和字符串2的所有字符进行比较SI指向串1下一个字符串1是否比较完?显示“NOMATCH”结束显示“MATCH”YNYNNY图2-1信号流图武汉理工大学《微机原理与接口技术》课程设计说明书53程序段落的说明3.1换行回车键的定义由于要运行出来的程序美观而且容易读懂、换行的需求所以本程序有了回车的宏定义,有了回车键的宏定义在以后程序中需要回车时就可以直接调用回车的宏定义“HUICHE”了,这样可以使程序简洁明了。回车键的宏定义程序如下所示:HUICHEMACRO;定义一个具有回车、换行功能的宏,为程序多次回车换行所调用。MOVDL,0DH;用2号功能显示回车。MOVAH,02HINT21HMOVDL,0AH;用2号功能显示换行。MOVAH,02HINT21HENDM3.2提示信息和字符串的定义本程序中用了7个提示信息都是DB类型的,他们分别是STJ0、STJ1、STJ2、STJ3、STJ4、TX1、TX2,它们的程序如下所示:STJ0DB0AH,0DH,'ifyouwanttoquitpleasepress...q/Q...','$'STJ1DB'******MATCH******','$';STJ2DB'*****NOMATCH*****','$'STJ3DB'pressanykeytocontinueexceptQ/q!','$'STJ4DB'******************','$'TX1DB'Pleaseinputthefirststring:','$'TX2DB'Pleaseinputthesecondstring:','$'本程序定义了两个字符串它们的范围都是100个字符都是DB类型的,字符串的容量大小可以自己改,但不能超出范围否则字符串会溢出。武汉理工大学《微机原理与接口技术》课程设计说明书6定义字符串的程序如下所示:STRING1DB100;100为存第一个字符串的最大可用空间的字节数。DB?;预留字节,存储将要输入的第1个字符串的实际长度。DB100DUP(?);预留100个字节空间,用于存放第1个字符串。STRING2DB100DB?DB100DUP(?)3.3DOS功能和部分指令的说明本程序调用了两个DOS功能程序,DOS8号功能:键盘输入字符但不显示出来;DOS9号功能:屏幕显示字符。1)8功能的调用(键盘输入字符但不显示字符),其格式如下所示:格式:MOVAH,08HINT21H2)9号功能调用(屏幕显示字符),其格式如下所示:格式:MOVDX,字符串的偏移地址MOVAH,09HINT21H在使用9功能调用时要注意一下问题:①待显示的字符串必须先放在内存一数据区(DS段)中,且以‘$’符号作为结束标志。②应当将字符串首地址的段基址和偏移地址分别存入DS和DX寄存器中。汇编指令SCASB的说明:在汇编语言中SCASB是一条字符串操作指令,源自“SCAnStringByte”的缩写。该指令的具体操作是:计算AL-byteof[ES:EDI],设置相应的标志寄存器的值;修改寄存器EDI的值:如果标志DF为0,则incEDI;如果DF为1,则decEDI。武汉理工大学《微机原理与接口技术》课程设计说明书7SCASB指令常与循环指令REPZ/REPNZ合用。例如,REPNZSCASB语句表示当寄存器ECX0且标志寄存器ZF=0,则再执行一次SCASB指令。比较寄存器AL的值不相等则重复查找的字4程序调试说明、结果记录与分析4.1程序调试说明程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性的必不可少的步骤。编完计算机程序,得调试所写程序是否正确,是否能满足所要求的功能。写好程序后运行后发现基本达到要求,但是不能按q或Q退出,而且不能连续输入输出,必须要关掉再运行才能再次输入,为解决这个问题,加了一个判断,如果输入是Q或q直接跳到结束,而且这个判断设置的位子要进行选择,调试。其次,为了解决连续输入输出,在程序加一个转移,以达到连续输入,输出,而转移到哪,这也需要去慢慢调试。我为了让程序运行出来更美观在程序中加了一些”*”这样运行出来的标识就明显了。4.2调试结果说明当程序编译连接成功后再运行首先出来的界面如图4-1所示:图4-1开始界面武汉理工大学《微机原理与接口技术》课程设计说明书8当你要退出直接按Q或者q都可以退出程序,当你要继续运行程序就按任意键除了Q或者q;继续运行程序以后屏幕就会让你输入字符串1和字符串2如下图4-2所示:图4-2输入字符串提示输入第一个字符串后回车它会提示你输入第二
本文标题:字符串匹配汇编语言程序设计
链接地址:https://www.777doc.com/doc-3131927 .html