如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
明德至善博学笃行微型计算机原理实验PAGE\*MERGEFORMAT3微型计算机原理实验PAGE\*MERGEFORMAT0实验课程名称微机原理实验实验项目名称查找匹配字符串实验指导老师马光喜学生姓名学院理学院专业电子信息科学与技术年级2008级(一)班学号实验时间2010年12月26日总成绩教师签名1.实验目的⑴熟悉堆栈指令的功能与应用。⑵进一步熟悉和掌握字符串指令的操作和使用。⑶掌握常用DOS功能的调用方法。2.实验内容⑴编程接收用户从键盘键入的一个关键字以及一个句子,如果句子中不包含关键字则显示‘Nomatch!’,如果句子中含有关键字则显示‘Match!’,并把该字在句子中的位置用十六进制数显示出来。3.实验准备⑴熟悉堆栈指令定义、功能及应用。⑵预习字符串指令使用。4.实验步骤实验2:查找匹配字符串1、题目:查找匹配字符串2、实验要求:编程接收用户从键盘键入的一个关键字以及一个句子,如果句子中不包含关键字则显示‘Nomatch!’,如果句子中含有关键字则显示‘Match!’,并把该字在句子中的位置用十六进制数显示出来。3、要求程序的执行过程如下:Enterkeyword:abcEntersentence:Wearestudyingabc.Matchatiocation11hofthesentence.Entersentence:xyz,ok?Nomatch.Entersentence:∧C-----退出4、提示⑴用0AH号功能调用键入关键字和句子分别存入各自的缓冲区。⑵在句中查找关键字时关键字和句子中相应字段的比较可用串比较指令⑶SI:关键字的指针DI:句子中的相比较的字段指针CX:关键字的字符个数BXDIwearedabc关键字abcSI5、整个句子和关键字的比较过程可以用一个循环结构来完成,循环的次数为:(句子的长度-关键字的长度)+1在计算循环次数时,如遇到句子的长度小于关键字长度的情况则应该转向“Nomatch!”.循环时需要用BX保存句子中的当前正在比较字段的首地址,BX、SI、DI的作用如上图所示6、输出信息用9号调用显示“找到”或“未找到”。找到的时候要求显示匹配字符串在句子中的位置,找到的时候BX为匹配字符串的首地址,将此值减去句子的首地址在加1就是匹配字符串在句子中的位置,可将该位置转换为16进制送屏幕显示。查找匹配字符串的源程序如下:DATASEGMENTSENTNECEDB50H,?,50HDUP(?)KWORDDB20H,?,20HDUP(?)MATCHDB0AH,0DH,"MatchAtLocation:$"NMATCHDB0AH,0DH,"NOMatch:$"MSGE3DB0AH,0DH,"EnterKeyword:$"MSGE4DB0AH,0DH,"EnterSentence:$"DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADX,MSGE3MOVAH,09INT21HLEADX,KWORDMOVAH,0AHINT21HLEADX,MSGE4MOVAH,09HINT21HLEADX,SENTNECEMOVAH,0AHINT21HLEASI,KWORD+2;开辟源串偏移地址MOVCH,0MOVCL,[SI-1]MOVBH,CLDECBHLEADI,SENTNECE+2MOVCL,[DI-1]MOVBL,1NEXT0:MOVDL,[SI]CMP[DI],DLJZNEXT1INCDIINCBLLOOPNEXT0LEADX,NMATCHMOVAH,09INT21HJMPRESNEXT1:PUSHBXPUSHDIPUSHCXNEXT2:INCDIINCSICMPBH,0JZMATCHMOVCL,BHDECBHMOVDL,[SI]CMP[DI],DLJNZCHXLOOPNEXT2MATCH:LEADX,MATCHMOVAH,09INT21HMOVDL,BLMOVCL,4SHRDL,CLCMPDL,9JBENEXT3ADDDL,7NEXT3:ADDDL,30HMOVAH,2INT21HMOVDL,BLANDDL,0FH