ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:192.10KB ,
资源ID:9208416      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9208416.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(字符串匹配汇编语言程序设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

字符串匹配汇编语言程序设计.docx

1、字符串匹配汇编语言程序设计学 号: 课 程 设 计题 目字符串匹配汇编语言程序设计学 院自动化学院班 级电气1003班姓 名申廷进指导教师徐腊梅2013年01月17日课程设计任务书学生姓名: 申廷进 专业班级: 电气1003班 指导教师: 徐腊梅 工作单位: 自动化学院 题 目: 字符串匹配汇编语言程序设计要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1)根据提示信息,从字符输入两个字符串,实现两个字符串的比较,如果两个字符串的字符只要有一个相同则显示“MATCH”,否则显示“NO MATCH”。2)可连续输入字符进行比较,直至单击“Q”或“q”键退出程序

2、。时间安排: 1.9 课设题目,设计内容;1.91.10 查资料,算法、方案设计。1.101.13 (硬)软件设计1.141.15 调试程序1161.17 写课设报告1.18 答辩指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日摘 要微型计算机简称微机,由于其具备人脑的某些功能,所以也称其为微电脑。是由大规模集成电路组成的、体积较小的电子计算机。它是以微处理器为基础,配以内存储器及输入输出接口电路和相应的辅助电路而构成的裸机。把微型计算机集成在一个芯片上即构成单片微型计算机。学习微机课程,主要内容包括微型计算机体系结构、8086微处理器和指令系统、汇编语言、设计以及微型计算机各

3、个组成部分,而汇编语言是其中一大板块。汇编语言编程不仅具有计算机提供给用户的最快而又最有效的语言的优势,也可以在不很了解计算机硬件的前提下使用它。在对于程序的空间和时间要求很高的场合,使用汇编语言是必不可少,甚至对于很多需要直接控制硬件的应用场合,用保护模式下的汇编语言编程也提供给了对硬件不了解的初学者一种方法。关键词:微机 汇编语言 编程字符串匹配汇编语言程序设计1设计总体方案1.1 设计目的1)进一步建立微机系统的概念,加深对系统的理解和认识,培养学生应用微型计算机解决实际问题的能力;2)进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的编写,提高编写汇编语言程序的水平和学

4、习程序调试方法。3) 掌握提示信息的使用方法及键盘输入信息的用法。1.2 设计要求及其条件课程设计要求:3)根据提示信息,从字符输入两个字符串,实现两个字符串的比较,如果两个字符串的字符只要有一个相同则显示“MATCH”,否则显示“NO MATCH”。4)可连续输入字符进行比较,直至单击“Q”或“q”键退出程序。设计初始条件:1) 采用16位微处理器 8086 CPU以及86系列微型计算机的指令系统。2) 软件设计平台可使用EMU8086软件。1.3设计方案本次课设主要是比较两个字符串中有没有相同的字符,如果有就显示“MATCH”,如果没有相同则显示“NO MATCH”。开始调用DOS的9号功

5、能显示提示信息,格式是MOV DX,字符偏移地址,MOV AH,09H,INT 21H,然后调用DOS的8号功能从键盘输入字符,格式是MOV AH,08H,INT 21H。本程序涉及到顺序、转移等基本程序,最后程序编写好以后从键盘输入两个字符串然后可进行多次比较,直到按Q或q退出程序,我在网上搜索到一些资料跟着资料慢慢编写程序直到程序没有错误。2 程序流程图分析由方案设计分析可知,此次设计比较简单,先初始化程序,然后根据提示输入两个字符串,然后进行循环比较。在循环的过程中,当按下Q或q键时退出程序;当按下其它键时,程序继续运行。 流程图设计:当初始化后,根据提示输入两个字符串,若有输入判断是否

6、为Q或q键,如果是则退出程序,程序结束,如果否则进行两字符串比较,过程比较明了,流程图分支不多,但功能能够很好的实现,流程图如图2-1所示。2.1转移流程图的分析本流程图有三处转移,第一处是在初始化程序后面要判断退不退出程序,提示是如果你要退出就按Q或q,不退出就按任意键继续执行程序。如图2-2所示 图2-2 退出提示另一处转移是判断两字符串是否有相等的字符,如果有则显示“MATCH”,如果不等且字符串1还没有比较完则转移到字符串偏移地址加1程序前继续执行程序,直到字符串1比较完成。最后一处转移是判断字符串中的字符是否比较完了,如果比较完了则显示“NO MATCH”,如果没有比较完则转移到SI

7、指向字符串的下一个字符继续执行程序直到字符串1的字符比较完。2.2流程图总体分析有图2-1流程图可以看出此流程图比较简洁,可以清楚的看出整个程序的运行状况。 图2-1 信号流图3程序段落的说明3.1换行回车键的定义由于要运行出来的程序美观而且容易读懂、换行的需求所以本程序有了回车的宏定义,有了回车键的宏定义在以后程序中需要回车时就可以直接调用回车的宏定义“HUICHE”了,这样可以使程序简洁明了。回车键的宏定义程序如下所示:HUICHE MACRO ;定义一个具有回车、换行功能的宏,为程序多次回车换行所调用。 MOV DL,0DH ;用2号功能显示回车。 MOV AH,02H INT 21H

8、MOV DL,0AH ;用2号功能显示换行。 MOV AH,02H INT 21H ENDM3.2提示信息和字符串的定义本程序中用了7个提示信息都是DB类型的,他们分别是STJ0、STJ1、STJ2、STJ3、STJ4、TX1、TX2,它们的程序如下所示:STJ0 DB 0AH,0DH,if you want to quit please press .q/Q.,$ STJ1 DB *MATCH*,$ ; STJ2 DB *NO MATCH*,$ STJ3 DB press any key to continue except Q/q!,$ STJ4 DB *,$ TX1 DB Please

9、input the first string:,$ TX2 DB Please input the second string:,$ 本程序定义了两个字符串它们的范围都是100个字符都是DB类型的,字符串的容量大小可以自己改,但不能超出范围否则字符串会溢出。定义字符串的程序如下所示:STRING1 DB 100 ; 100为存第一个字符串的最大可用空间的字节数。 DB ? ;预留字节,存储将要输入的第1个字符串的实际长度。 DB 100 DUP(?);预留100个字节空间,用于存放第1个字符串。 STRING2 DB 100 DB ? DB 100 DUP(?)3.3DOS功能和部分指令的说明

10、本程序调用了两个DOS功能程序,DOS 8号功能:键盘输入字符但不显示出来;DOS 9号功能:屏幕显示字符。1)8功能的调用(键盘输入字符但不显示字符),其格式如下所示:格式:MOV AH,08HINT 21H2)9号功能调用(屏幕显示字符),其格式如下所示:格式:MOV DX,字符串的偏移地址 MOV AH,09H INT 21H在使用9功能调用时要注意一下问题: 待显示的字符串必须先放在内存一数据区(DS段)中,且以$符号作为结束标志。 应当将字符串首地址的段基址和偏移地址分别存入DS和DX寄存器中。汇编指令SCASB的说明:在汇编语言中SCASB是一条字符串操作指令,源自“SCAn St

11、ring Byte”的缩写。该指令的具体操作是:计算 AL - byte of ES:EDI , 设置相应的标志寄存器的值;修改寄存器EDI的值:如果标志DF为0,则 inc EDI;如果DF为1,则 dec EDI。SCASB指令常与循环指令REPZ/REPNZ合用。例如,REPNZ SCASB 语句表示当 寄存器ECX0 且 标志寄存器ZF=0,则再执行一次SCASB指令。比较寄存器AL的值不相等则重复查找的字4程序调试说明、结果记录与分析4.1程序调试说明程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性的必

12、不可少的步骤。编完计算机程序,得调试所写程序是否正确,是否能满足所要求的功能。写好程序后运行后发现基本达到要求,但是不能按q或Q退出,而且不能连续输入输出,必须要关掉再运行才能再次输入,为解决这个问题,加了一个判断,如果输入是Q或q直接跳到结束,而且这个判断设置的位子要进行选择,调试。其次,为了解决连续输入输出,在程序加一个转移,以达到连续输入,输出,而转移到哪,这也需要去慢慢调试。我为了让程序运行出来更美观在程序中加了一些”*”这样运行出来的标识就明显了。4.2调试结果说明当程序编译连接成功后再运行首先出来的界面如图4-1所示: 图4-1 开始界面当你要退出直接按Q或者q都可以退出程序,当你

13、要继续运行程序就按任意键除了Q或者q;继续运行程序以后屏幕就会让你输入字符串1和字符串2如下图4-2所示: 图4-2 输入字符串提示输入第一个字符串后回车它会提示你输入第二个字符串,然后再回车这时就对两字符串进行比较,如果两字符串中只要有一个字符相同则显示“MATCH”图4-3所示;如果都不相同则显示“NO MATCH”图4-4所示,此程序还可以比较许多次,直到输入Q或者q时才退出程序。 图4-3 有相同的显示 图4-4 不同时的显示4.3 分析结果可知运行程序后,能达到设计要求,即输入两个字符串后进行比较,如果两个字符串只要有一个字符相同则显示“MATCH”;如果完全不同则显示“NO MAT

14、CH”,按Q或q直接退出程序,输出形式也与要求完全一致,程序设计成功。5心得体会 拿到课程设计的题目部分程序都很简单,都是平时上课所学的,可是我想把程序弄得好看一点而且我想让程序多次比较按Q或者q时推出,这让我有点不知所措,后来在网上看到一个类似的程序,便想可以套用部分程序,可是网上的都没有我想要的,所以只好自己一个一个的敲上去,但最后还是达到我想要目的,整个编程下来,让我体会最深的就是DOS功能的调用,平时可能觉得一些很难的要求通过编程并不能简单实现,但是通过 DOS功能的调用可以很轻松达到,而且通过了本次课程设计,我对输入,输出的本质概念有了更深层次的理解,知道了微机实验时的人机交换程序是

15、如何得到的,学习了不少的知识。总之,就我自己而言,这次课程设计是起到的它的作用,对自己有了一个锻炼的效果,并使自己对汇编语言有了一个更加清晰的了解,加强了自己的编程能力,而且学会了搜索资料,弄懂资料,并转换为自己的知识,这次课程设计使我受益匪浅!参考文献1 彭虎等编著微机原理与接口技术(第二版)北京:电子工业出版社,20082 杨居义编著.微机原理与接口技术项目教程.北京:清华大学出版社,20073 荆淑霞编著.微机原理与汇编语言程序设计.北京:清华大学出版社,20044 16/32位微机原理、汇编语言及接口技术(第二版)机械工业出版社 钱晓捷、陈涛等。5 汇编语言程序设计教程(周艳萍 邹伟著

16、) 清华大学出版社。6 PC机汇编语言实战精解(李春生著) 南开大学出版社。附录 HUICHE MACRO MOV DL,0DH ;用2号功能显示回车。 MOV AH,02H INT 21H MOV DL,0AH ;用2号功能显示换行。 MOV AH,02H INT 21H ENDM DATA SEGMENT STJ0 DB 0AH,0DH,if you want to quit please press .q/Q.,$ STJ1 DB *MATCH*,$ STJ2 DB *NO MATCH*,$ ; STJ3 DB press any key to continue except Q/q!,

17、$ STJ4 DB *,$ TX1 DB Please input the first string:,$ TX2 DB Please input the second string:,$ STRING1 DB 100 DB ? DB 100 DUP(?) ;预留100个字节空间,用于存放第1个字符串。 STRING2 DB 100 DB ? DB 100 DUP(?) DATA ENDS STACK1 SEGMENT ;定义一个50字节大小的堆栈段空间。 ZHAN DB 50 DUP(?) ZHANDING EQU LENGTH ZHAN STACK1 ENDS CODE SEGMENT ;

18、代码段开始。 ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK1 START: MOV AX,DATA MOV DS,AX ; MOV ES,AX ; MOV AX,STACK1 ; MOV SS,AX ; MOV SP,ZHANDING ;栈顶指针赋初值。 L0: LEA DX,STJ0 ;输入提示 MOV AH,9 INT 21H HUICHE LEA DX,STJ3 MOV AH,9 INT 21H HUICHE MOV AH,08H INT 21H CMP AL,Q JE EXIT CMP AL,q JE EXIT JMP L2 EXIT: MOV AH,

19、4CH INT 21H L2: MOV DX, OFFSET TX1 MOV AH,9 INT 21H HUICHE HUICHE MOV DX, OFFSET STRING1 MOV AH,0AH ;用10号功能输入第1个字符串。 INT 21H HUICHE HUICHE MOV DX, OFFSET TX2 MOV AH,9 INT 21H HUICHE HUICHE MOV DX, OFFSET STRING2 ;输入第2个字符串。 MOV AH,0AH INT 21H HUICHE HUICHE LEA DX,STJ4 MOV AH,9 INT 21H HUICHE CLD ; 方向

20、标志位清0,按增址方向操作。 MOV SI, OFFSET STRING12 MOV BX,0 MOV CL, STRING11 MOV CH,0 ; 将第1个字符串的实际长度赋给CX. L1: PUSH CX MOV DI, OFFSET STRING22 MOV CL, STRING21 MOV CH,0 MOV AL,SI REPNZ SCASB JZ A1 INC SI ;SI加1,指向第1个字符串的下一个字符。 INC BX ;记下第1个字符串已经被搜索过的字符的个数。 POP CX CMP CX,BX JNZ L1 MOV DX, OFFSET STJ2 ;显示NO MACTH。

21、MOV AH,9 INT 21H HUICHE LEA DX,STJ4 MOV AH,9 INT 21H HUICHE JMP START A1: MOV DX, OFFSET STJ1 ;显示MACTH。 MOV AH,9 INT 21H HUICHE LEA DX,STJ4 MOV AH,9 INT 21H HUICHE HUICHE JMP START MOV AH,4CH ;返回DOS系统,准备结束程序。 INT 21H CODE ENDS END START ;程序从此处结束。 图5-1 附录说明图本科生课程设计成绩评定表姓 名申廷进性 别男专业、班级电气1003班课程设计题目:字符串匹配汇编语言程序设计课程设计答辩或质疑记录:成绩评定依据:评 定 项 目评分成绩1选题合理、目的明确(10分)2设计方案正确、具有可行性、创新性(20分)3设计结果(例如:系统设计程序、仿真程序) (20分)4态度认真、学习刻苦、遵守纪律(15分)5设计报告的规范化、参考文献充分(不少于5篇)(10分)6答辩(25分)总 分最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 年 月 日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1