资源描述:
《微机原理实验_字符串处理程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、明德至善博学笃行实验课程名称微机原理实验实验项目名称字符串处理程序实验指导老师学生姓名学院理学院专业电子信息科学与技术年级2008级(一)班学号实验时间2010年12月20日总成绩教师签名微型计算机原理实验6明德至善博学笃行1.实验目的⑴熟悉串操作指令的功能与应用。⑵掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序。2.实验内容⑴字符串统计。字STRN开始的存储区中,有一个字符串,统计其中含有小写字母的个数,将统计结果以两位十进制数显示在屏幕上。⑵在给定的字符串中,删除重复的字符,其余的字符向前递进。3.实验准备⑴熟悉字符串处理的方法和字符处理程序的设计。⑵认真预习有关串操作的
2、指令及其寻址凡事的特点,能够正确使用串操作指令,并准备好数据。③按正常的方法将删除字符程序编成子程序,在规定子程序的入口和出口参数。4.实验步骤⑴用1号系统调用从键盘键入一个字符串,然后统计其中小写字母的个数。程序每次执行,都能得到不同的结果。;COUNTDC.ASMDATASEGMENTSTRNDB80DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADI,STRNMOVCL,0AGAIN:MOVAH,1INT21HCMPAL,0DHJZDONEMOV[DI],ALINCDIINCCLJMPA
3、GAINDONE:LEASI,STRNMOVCH,0MOVBL,0CLDCYCLE:LODSB①CMPAL,61HJBNEXTMPAL,7AHCJANEXTINCBLNEXT:LOOPCYCLEMOVAL,BLMOVAH,0MOVCL,10DIVCLXCHGAH,ALPUSHAXMOVDX,0DHMOVAH,2INT21HMOVDX,0AHMOVAH,2INT21HPOPAXMOVDL,AHORDL,30HMOVAH,2PUSHAXINT21HPOPAXMOVDL,AL①ORDL,30H:微型计算机原理实验6明德至善博学笃行①INT21HPOPAXMOVDL,ALORDL,30HMOVAH
4、,2INT21HMOVAH,4CHINT21HCODEENDSENDSTART编译源程序:如下,发现地29行有错误。用EDIT命令找到错误地方,并进行修改,如下图所示:修改后保存程序,重新编译:微型计算机原理实验6明德至善博学笃行重新编译后程序没有错误,用反汇编查看指令代码:如下图所示:运行程序,验证程序设计结果的正确性。从键盘上输入字符串“ADKJjkdjfljdeowekdjg”,共二十个字符,其中小写字母十六个,显示结果如下:由运行结果可知,程序运行正确,实现了设计要求。②实验2课参考教材第五章练习10的解法,但要编写一个在同一个字符串中删除字符,并将其余字符向前递补。删除字符串中重
5、复字符的源程序清单:;DELD.ASMDATASEGMENTSTRNDB80DUP(?)LENDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVES,AXLEASI,STRN①MOVCL,0AGAIN:MOVAH,1①INT21HCMPAL,0DHJZDONEMOV[SI],ALINCSIINCCLJMPAGAINDONE:MOVCH,0MOVLEN,CLDECSI②MOVBYTEPTR[SI+1],'$'微型计算机原理实验6明德至善博学笃行REPEAT:PUSHSI②PUSHCXPU
6、SHCX;CX为内循环计数POPDX;DX为外循环计数DECCXMOVAL,[SI]CMPAL,0JENEXT1;若为空字符,则跳过COMP:DECSICMPAL,[SI]JNEGOON;为非重复字符MOVBYTEPTR[SI],0GOON:LOOPCOMP;查出与该字符重复的所有字符,并用0NEXT1:POPDXPOPSIDECSIDECDXMOVCX,DXJNZREPEAT;对所有重复字符都进行查找LEASI,STRN;删除重复字符MOVCL,LENMOVCH,0CYCLE:MOVAL,[SI]INCCLCMPAL,0;是重复字符吗?JNZNEXT;不是,查找下一个字符DECCX;递补
7、子串长度送CXJZALLDONECALLDELE;删除该空字符并递补③DECSINEXT:INCSI③LOOPCYCLEALLDONE:MOVDL,0AHMOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HLEADX,STRNMOVAH,9INT21HMOVAH,4CHINT21HDELEPROCPUSHSIPUSHCXCLDMOVDI,SI;空字符处为目的首址INCSI;下一个地址为源串首址REPMO