字符串匹配实验.doc

上传人:枫** 文档编号:554947177 上传时间:2023-05-13 格式:DOC 页数:5 大小:43.50KB
返回 下载 相关 举报
字符串匹配实验.doc_第1页
第1页 / 共5页
字符串匹配实验.doc_第2页
第2页 / 共5页
字符串匹配实验.doc_第3页
第3页 / 共5页
字符串匹配实验.doc_第4页
第4页 / 共5页
字符串匹配实验.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《字符串匹配实验.doc》由会员分享,可在线阅读,更多相关《字符串匹配实验.doc(5页珍藏版)》请在金锄头文库上搜索。

1、8086汇编语言源程序2011年 湖北汽车工业学院 袁致旺 作8086汇编语言程序实验:实验二、字符串匹配实验题目:1、 (必做题)编程实现:从键盘分别输入两个字符串(不必等长),然后进行比较,若两个字符串有相同的字符,则显示“MATCH”,若字符都不相同则显示“NO MATCH”。2、 (选做题)编程实现:从键盘分别输入两个字符串,然后进行比较,若两个字符串的长度和对应字符都完全相同,则显示“MATCH”,否则显示“NO MATCH”。对应程序如下所示:;第1题;=HUICHEMACRO ;定义一个具有回车、换行功能的宏,为程序多次回车换行所调用。MOV DL,0DH;用2号功能“显示”回车

2、。MOV AH,02HINT 21HMOV DL,0AH;用2号功能“显示”换行。MOV AH,02HINT 21HENDMDATA SEGMENTMESSAGE1 DB MATCH,$;定义“MATCH”提示信息,“$”作为调用9号功能的结束符。MESSAGE2 DB NO MATCH,$;定义“NO MATCH”提示信息。TISHI1 DB Please input the first string:,$;提示输入第1个字符串的提示信息。TISHI2 DB Please input the second string:,$;提示输入第1个字符串的提示信息。STRING1 DB 100; 1

3、00为存第一个字符串的最大可用空间的字节数。DB ?;预留字节,存储将要输入的第1个字符串的实际长度。DB 100 DUP(?);预留100个字节空间,用于存放第1个字符串。STRING2 DB 100DB ?DB 100 DUP(?)DATA ENDSSTACK SEGMENT;定义一个50字节大小的堆栈段空间。ZHANDB 50 DUP(?)ZHANDINGEQU LENGTH ZHANSTACK ENDSCODE SEGMENT;代码段开始。ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTARTUP:MOV AX,DATA;程序开始,首先将几个段寄存器初

4、始化为各段的首地址。MOV DS,AX;MOV ES,AX;MOV AX,STACK;MOV SS,AX;MOV SP,ZHANDING;栈顶指针赋初值。MOV DX, OFFSET TISHI1;用9功能显示提示输入第1个字符串的提示信息。MOV AH,9INT 21HHUICHE;调用 宏定义的“回车换行”功能,程序运行到此处时进行回车换行。MOV DX, OFFSET STRING1MOV AH,0AH;用10号功能输入第1个字符串。INT 21HHUICHEMOV DX, OFFSET TISHI2MOV AH,9INT 21HHUICHEMOV DX, OFFSET STRING2;

5、输入第2个字符串。MOV AH,0AHINT 21HHUICHECLD; 方向标志位清0,按增址方向操作。MOV SI, OFFSET STRING12;将第1个字符串第1个字符偏移地址传送给SI,为串搜索做准备。MOV BX,0; BX为后面“记下第1个字符串已经被搜索过的字符的个数”做准备。MOV CL, STRING11MOV CH,0; 将第1个字符串的实际长度赋给CX。L1:PUSH CX;先将第1个字符串的实际长度压入堆栈,保留,为后面备用。MOV DI, OFFSET STRING22;将第2个字符串第1个字符偏移地址传送给DI,为串搜索做准备。MOV CL, STRING21;

6、将第2个字符串的实际长度传送给CX。MOV CH,0MOV AL,SIREPNZ SCASB;进行串搜索,将第2个字符串中的字符与第1个字符串的一个字符进行比较。JZ XXX1INC SI;SI加1,指向第1个字符串的下一个字符。INC BX;记下第1个字符串已经被搜索过的字符的个数。POP CXCMP CX,BX;“已经被搜索过的字符个数”BX与“第1个字符串实际长度”CX进行比较。JNZ L1;若BX与CX不等,则进行“第1字符串的下一字符”与“第2字符串中的字符”的比较。;若BX与CX相等,则进行执行下面的语句,显示“NO MACTH”。MOV DX, OFFSET MESSAGE2;显

7、示“NO MACTH”。MOV AH,9INT 21HJMP XXX2;显示“NO MACTH”后,跳转到XXX2,准备返回DOS系统。XXX1:MOV DX, OFFSET MESSAGE1;显示“MACTH”。MOV AH,9INT 21HXXX2:MOV AH,1INT 21H;等待键盘响应,准备返回DOS系统。MOV AH,4CH;返回DOS系统,准备结束程序。INT 21HCODE ENDSEND STARTUP;程序从此处结束。;=;第2题;=HUICHEMACRO ;定义一个具有回车、换行功能的宏,为程序多次回车换行所调用。MOV DL,0DHMOV AH,02HINT 21HM

8、OV DL,0AHMOV AH,02HINT 21HENDMDATA SEGMENTMESSAGE1 DB MATCH,$MESSAGE2 DB NO MATCH,$TISHI1 DB Please input the first string:,$TISHI2 DB Please input the second string:,$STRING1 DB 100DB ?DB 100 DUP(?)STRING2 DB 100DB ?DB 100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTARTUP:MOV AX,DATA

9、MOV DS,AXMOV ES,AXMOV DX, OFFSET TISHI1MOV AH,9INT 21HHUICHE;调用 宏定义的“回车换行”功能,程序运行到此处时进行回车换行。MOV DX,OFFSET STRING1MOV AH,0AHINT 21HHUICHEMOV DX, OFFSET TISHI2MOV AH,9INT 21HHUICHEMOV DX,OFFSET STRING2MOV AH,0AHINT 21HHUICHECLDMOV SI,OFFSET STRING12 ;将第1个字符串第1个字符偏移地址传送给SI,为串比较做准备。MOV BL, STRING11MOV B

10、H,0; 将第1个字符串的实际长度赋给BX。MOV DI,OFFSET STRING22 ;将第2个字符串第1个字符偏移地址传送给DI,为串比较做准备。MOV CL, STRING21MOV CH,0; 将第2个字符串的实际长度赋给CX。CMP BX,CX;比较两个字符串的长度JNE XXX0;若两个字符串的长度不相等,则转到XXX0处,显示“NO MACTH”。REPE CMPSB;进行串比较,将第2个字符串与第1个字符串按字符逐一进行比较。JE XXX1;若经过比较,两字符串完全相等,则跳到XXX1处,显示“MACTH”。;否则到XXX0处,显示“NO MACTH”。XXX0:MOV DX, OFFSET MESSAGE2;显示“NO MACTH”。MOV AH,9INT 21HJMP XXX2;显示“NO MACTH”后,跳转到XXX2,准备返回DOS系统。XXX1:MOV DX, OFFSET MESSAGE1;显示“MACTH”。MOV AH,9INT 21HXXX2:MOV AH,1;等待键盘响应,准备返回DOS系统。INT 21HMOV AH,4CHINT 21H;返回DOS系统,准备结束程序。CODE ENDSEND STARTUP;程序从此处结束。;=

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号