汇编语言查找匹配字符串

汇编语言查找匹配字符串

ID:6044806

大小:66.18 KB

页数:5页

时间:2018-01-01

汇编语言查找匹配字符串_第1页
汇编语言查找匹配字符串_第2页
汇编语言查找匹配字符串_第3页
汇编语言查找匹配字符串_第4页
汇编语言查找匹配字符串_第5页
资源描述:

《汇编语言查找匹配字符串》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、汇编语言实验二查找匹配字符串一、目的查找匹配字符串SEARCH二、实验内容程序接收用户键入的一个关键字以及一个句子。如果句子中不包含关键字则显示‘NOmatch!’;如果句子中包含关键字则显示‘MATCH’,且把该字在句子中的位置用十六进制数显示出来。流程图NYYY输入关键字结束关键字长度=0输入句子句子长度<关键字长度Y保存关键字长度到cx,cx入栈,保存总循环次数(句子长度-关键字长度+1)到al,将句子的首地址放进bx(作为基址寄存器)si=di=0(变址寄存器)开始比较[bx+di]与[si]是否相等si+1,di+1,cx-

2、1(同时指向下一个字符)YNbx+1(句子指向下一个字符)cx出栈,再入栈,si,di清零,al-1cx是否为0N匹配完成,调用子程序输出al是否为0不匹配,输出开始三、设计和编码DATASEGMENTmess1DB'Enterkeyword:','$'mess2DB'EnterSentence:','$'mess3DB'Matchatlocation:','$'mess4DB'NOTMATCH.',13,10,'$'mess5DB'Hifthesentence',13,10,'$'changeDB13,10,'$'stoknin1l

3、abelbytemax1db10act1db?stokn1db10dup(?)stoknin2labelbytemax2db50act2db?stokn2db50dup(?)DATAENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESEGMENT;*************************************代码段mainprocfarassumecs:code,ds:data,es:dataSTART:pushdssubAX,AXsubBX,BXsubDI,DIsubSI,SIpushAX

4、;为返回dos并清空后面要用到的寄存器MOVAX,DATAMOVDS,AXLEADX,mess1MOVah,09INT21h;输出EnterkeywordLEADX,stoknin1MOVah,0ah;用21号中段的0ah号功能获取关键字INT21hcmpact1,0jeexit;如果为空直接退出程序a10:;********************************输入Sentence并判断LEADX,changeMOVah,09INT21h;输出回程,换行LEADX,mess2MOVah,09INT21h;输出EnterSe

5、ntence:LEADX,stoknin2MOVah,0ahINT21h;用21号中段的0ah号功能获取句子MOVAL,act1CBWMOVCX,AX;保存关键字长度到cxPUSHCX;cx入栈MOVAL,act2cmpAL,0jea50;保存句子长度到al,若句子为空则跳转显示notmatchSUBAL,act1jsa50;若句子长度小于关键字长度,则跳转显示notmatchINCALCBWLEABX,stokn2;将句子的首地址放进BXMOVDI,0MOVSI,0a20:;*****************************

6、***********比较,内循环MOVAH,[BX+DI]CMPAH,stokn1[SI];遇见字符不相等就跳转到a30jnea30INCDIINCSIDECCX;没遇到一个相等的字符,cx-1,cx不为0则比较下一个字符,当cx为0是说明关键字比较完CMPCX,0jea40jmpa20a30:;*****************************************外循环,BX+1,清空si,di继续内循环比较INCBXDECALcmpAL,0jea50MOVDI,0MOVSI,0POPCXpushCXjmpa20a40

7、:;*****************************************match,将bx减去句子的首地址加一得到关键字所在位置,调用二进制转十六进制子函数将位置输出SUBBX,offsetstokn2INCBXLEADX,changeMOVah,09INT21hLEADX,mess3MOVah,09INT21hCALLbtohLEADX,mess5MOVah,09INT21hjmpa10;****************************************二进制转换十六进制btohPROCNEARMOVCH

8、,4rotate:MOVCL,4ROLBX,CLMOVAL,BLandAL,0fhaddAL,30hcmpal,3ahjlprintitaddal,7hprintit:MOVdl,alMOVah,2int21hdecch

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。