字符串匹配实验_第1页
字符串匹配实验_第2页
字符串匹配实验_第3页
字符串匹配实验_第4页
字符串匹配实验_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、8086汇编语言程序实验:实验二、字符串匹配实验题目:1、 (必做题)编程实现:从键盘分别输入两个字符串(不必等长),然后进行比较,若两个字符串有相同的字符,则显示“match”,若字符都不相同则显示“no match”。2、 (选做题)编程实现:从键盘分别输入两个字符串,然后进行比较,若两个字符串的长度和对应字符都完全相同,则显示“match”,否则显示“no match”。对应程序如下所示:;第1题;=huichemacro ;定义一个具有回车、换行功能的宏,为程序多次回车换行所调用。mov dl,0dh;用2号功能“显示”回车。mov ah,02hint 21hmov dl,0ah;用2

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; 100为存第一个字符串的最大可用空间的字节数。db ?;预留字节

3、,存储将要输入的第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;程序开始,首先将几个段寄存器初始化为各段的首地址。mov ds,ax;mov es,ax;m

4、ov 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;输入第2个字符串。mov ah,0ahint 21hhuich

5、ecld; 方向标志位清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;将第2个字符串的实际长度传送给cx。mov ch,0mov a

6、l,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;显示“no macth”。mov ah,9int 21hjmp

7、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 21hmov dl,0ahmov ah,02hint 21hendmd

8、ata 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,datamov ds,axmov es,axmov dx, offse

9、t 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 bh,0; 将第1个字符串的实际长度赋给bx。mov di,of

10、fset 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,准备返回do

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论