课程设计综合实验报告书(科院模版)_第1页
课程设计综合实验报告书(科院模版)_第2页
课程设计综合实验报告书(科院模版)_第3页
课程设计综合实验报告书(科院模版)_第4页
课程设计综合实验报告书(科院模版)_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

科技学院课程设计综合实验报告20102011年度第1学期名称汇编语言程序设计课程设计题目查找匹配字符串院系信息工程系班级学号学生姓名指导教师设计周数一周成绩日期2010年12月10日一、课程设计的目的与要求实验一比较字符串SAMPLE熟悉DEBUG有关命令的使用方法;利用DEBUG掌握有关指令的功能;利用DEBUG运行简单的程序段。进入和退出DEBUG程序;学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。对于U命令、N命令、W命令等,也应试一下;利用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。编写一个程序比较两个字符串STRING1和STRING2所含的字符数是否相同。若相同则显示MATH,否则,显示NOMATH;要求编写程序,并汇编,连接,运行,然后使用DEBUG调试该程序。实验二查找匹配字符串程序接受用户键入的一个关键字以及一个句子。如果句子中不含关键字则显示NOMATH;如果句子中包含关键字则显示MATH,且把该字在句子中的位置用十六进制数显示出来。实验三分类统计字符的个数程序接收用户键入的一行字符(用回车符结束),并按字母,数字及其他字符分类计数,然后将结果存入以LETTER,DIGIT和OTHER为名的存储单元中。实验四查找电话号码41要求程序建立一个可存50项的电话号码表,每项包括人名及电话号码两部分;42程序可接受输入人名及相应的电话号码,并把他们加入到电话号码表中;43凡有新的输入后,程序应按人名对电话号码表重新排序;44程序可接受需要查找电话号码的人名,并从电话号码表中查出其电话号码,再在屏幕上显示出来。实验五屏幕窗口程序在屏幕上开出三个窗口,它们的行列坐标如下图所示。5,1015,305,5015,7018,1522,65光标首先定位在右窗口最下面一行的行首(15,50),如果从键盘输入字符,则显示在右窗口,同时也显示在下窗口的最下面一行。若需要将字符显示于左窗口,则先按下左键,接着再从键盘输入字符,字符就会从左窗口的最下行开始显示,同时下窗口也显示左窗口的内容。当一行字符显示满后,窗口自动向上卷动一行,输入字符继续显示于最低一行,窗口最高一行向上卷动后消失。实验六扩充键盘处理功能在完成键盘处理基本功能的基础上,增加LEFT_SHIFT和RIGHT_SHIFT键的功能。要求实现左右SHIFT任何一个键处于按下状态时输入字符为键盘的上档字符或大写字母,否则输出数字或小写字母。二、设计(实验)正文实验一比较字符串SAMPLE(1)设计思路将两个字符串通过LEA指令放入SI和DI中,用指令REPZ取字符串的首地址开始比较,REPZ表示在CX不为0时,且ZF1重复执行后面的串处理指令CMPS。如果不同选择NOTMATCH输出,否则输出MATCH。REPZCMPSBJZMATCHJMPNOTMATCH(2)程序框图比较SI和DI内的字符串是否相同输出MATCH结束输出NOTMATCH(3)程序实现LEASI,STRING1LEADI,STRING2/分别放入字符串于SI和DI/CLD/规定字符串于SI和DI的比较方向/输入比较字符串将字符串分别放入SI和DIMOVCX,25/设置字符串比较次数/REPZCMPSB/循环比较字符串/JZMATCH/字符串相同跳转/LEADX,MESS2JMPSHORTDISP/字符串不相同无条件跳转/MATCHLEADX,MESS1DISPMOVAH,09/输出结果/INT21HMOVAH,4CHINT21H(4)实验结果(实验的运行结果)实验二查找匹配字符串(1)设计思路(包括程序的原理,算法及数据结构等)(2)程序框图(画出程序主要部分流程图)NYYY输入关键字结束关键字长度0输入句子句子长度关键字长度Y保存关键字长度到CX,CX入栈,保存总循环次数句子长度关键字长度1到AL,将句子的首地址放进BX作为基址寄存器SIDI0变址寄存器开始比较BXDI与SI是否相等SI1,DI1,CX1同时指向下一个字符YNBX1句子指向下一个字符CX出栈,再入栈,SI,DI清零,AL1CX是否为0N匹配完成,调用子程序输出AL是否为0不匹配,输出(3)程序实现LEADX,MESS1MOVAH,09INT21H输出ENTERKEYWORDLEADX,STOKNIN1MOVAH,0AH用21号中段的0AH号功能获取关键字INT21HCMPACT1,0JEEXIT如果为空直接退出程序A10输入SENTENCE并判断LEADX,CHANGEMOVAH,09INT21H输出回程,换行LEADX,MESS2MOVAH,09INT21H输出ENTERSENTENCELEADX,STOKNIN2MOVAH,0AHINT21H用21号中段的0AH号功能获取句子MOVAL,ACT1CBWMOVCX,AX保存关键字长度到CXPUSHCXCX入栈MOVAL,ACT2CMPAL,0JEA50保存句子长度到AL,若句子为空则跳转显示NOTMATCHSUBAL,ACT1JSA50若句子长度小于关键字长度,则跳转显示NOTMATCHINCALCBWLEABX,STOKN2将句子的首地址放进BXMOVDI,0MOVSI,0A20比较,内循环MOVAH,BXDICMPAH,STOKN1SIJNEA30INCDIINCSIDECCXCMPCX,0JEA40JMPA20A30外循环,BX1,清空SI,DI继续内循环比较INCBXDECALCMPAL,0JEA50MOVDI,0MOVSI,0POPCXPUSHCXJMPA20A40MATCH,将BX减去句子的首地址加一得到关键字所在位置,调用二进制转十六进制子函数将位置输出SUBBX,OFFSETSTOKN2INCBXLEADX,CHANGEMOVAH,09INT21HLEADX,MESS3MOVAH,09INT21HCALLBTOHLEADX,MESS5MOVAH,09INT21HJMPA10BTOHPROCNEAR二进制转换十六进制MOVCH,4ROTATEMOVCL,4ROLBX,CLMOVAL,BLANDAL,0FHADDAL,30HCMPAL,3AHJLPRINTITADDAL,7HPRINTITMOVDL,ALMOVAH,2INT21HDECCHJNZROTATERETBTOHENDP(4)实验结果(实验的运行结果)实验三分类统计字符的个数(1)设计思路(包括程序的原理,算法及数据结构等)(2)程序框图(画出程序主要部分流程图)(3)程序实现(注意不用写出整体程序,写出部分关键代码即可,不要粘贴大量代码,代码后要求用文字描述代码完成的功能)(4)实验结果(实验的运行结果)实验四查找电话号码(1)设计思路(包括程序的原理,算法及数据结构等)(2)程序框图(画出程序主要部分流程图)(3)程序实现(注意不用写出整体程序,写出部分关键代码即可,不要粘贴大量代码,代码后要求用文字描述代码完成的功能)DATASSEGMENT此处输入数据段代码NAMEPARLABELBYTEMAXNLENDB21ACTNLENDB_NAMEDB21DUP在MASM50下不能用NAME哦PHONEPARLABELBYTEMAXPLENDB9ACTPLENDBPHONEDB9DUPCRLFDB13,10,ENDADDRDWMESS1DBINPUTNAME,MESS2DBINPUTATELEPHONENUMBER,MESS3DBDOYOUWANTATELEPHONENUMBERY/N,MESS4DBNAME,MESS5DBNAME,16DUP,TEL,0DH,0AH,MESS6DBNOTINTHETABLE,0DH,0AH,MESS7DBINVALIDINPUT,0DH,0AH,COUNTDB0TEL_TABDB50DUP20DUP,8DUPTEMPDB20DUP,8DUP,0DH,0AH,SWAPPEDDB0DATASENDSSTACKSSEGMENT此处输入堆栈段代码STACKSENDSCODESSEGMENTMAINPROCFARASSUMECSCODES,DSDATAS,SSSTACKSPUSHDSSUBAX,AXPUSHAXMOVAX,DATASMOVDS,AXMOVES,AXCLDLEADI,TEL_TABDI中存放表首地址此处输入代码段代码INPUTLOOP提示INPUTNAMEMOVAH,09HLEADX,MESS1INT21HCALLINPUT_NAMECMPACTNLEN,0没有输入人名时JZA10直接跳到提示是否查找的地方CMPCOUNT,50输入上限JEA10CALLSTOR_NAME保存人名到TEL_TAB提示INPUTATELEPHONENUMBERMOVAH,09HLEADX,MESS2INT21HCALLINPUT_STOR_PHONE输入并保存电话号码JMPINPUTLOOPA10CMPCOUNT,1JBESEARCHLOOP如果没有输入或者输入一个CALLNAME_SORT排序SEARCHLOOPLEADX,MESS3MOVAH,09HINT21HMOVAH,01HINT21HCMPAL,NJEEXITCMPAL,NJEEXITCMPAL,YJESHOWNAMECMPAL,YJESHOWNAMEMOVAH,09LEADX,CRLFINT21HLEADX,MESS7非法输入MOVAH,09HINT21HJMPSEARCHLOOPSHOWNAMEMOVAH,09LEADX,CRLFINT21HLEADX,MESS4当输入Y时,显示NAMEMOVAH,09INT21HCALLINPUT_NAME输入要查找的人名CALLNAME_SEARCH查找CALLPRINTLINEJMPSEARCHLOOPEXITRETMAINENDPINPUT_NAMEPROCNEARMOVAH,0AHLEADX,NAMEPARINT21HMOVAH,02HMOVDL,0AH换行INT21HMOVBH,0MOVBL,ACTNLENMOVCX,21SUBCX,BXI20MOV_NAMEBX,20HINCBXLOOPI20RETINPUT_NAMEENDPSTOR_NAMEPROCNEARINCCOUNTCLDLEASI,_NAMEMOVCX,10把NAME中的前20个字符放入TEL_TAB中每一个人信息的前20个BYTE中REPMOVSWRETSTOR_NAMEENDPINPUT_STOR_PHONEPROCNEARMOVAH,0AHLEADX,PHONEPARINT21HMOVAH,02HMOVDL,0AH换行INT21HMOVBH,0MOVBL,ACTPLENMOVCX,9SUBCX,BX计算剩下的长度IS20MOVPHONEBX,20H剩下的地方填充空格INCBXLOOPIS20CLDLEASI,PHONEMOVCX,4把PHONE中的前8个字符放入TEL_TAB中每一个人信息的后8个BYTE中REPMOVSWRETINPUT_STOR_PHONEENDPNAME_SORTPROCNEARSUBDI,56仔细想想为什么是这样的MOVENDADDR,DINS10MOVSWAPPED,0LEASI,TEL_TABNS20MOVCX,20MOVDI,SIADDDI,28下一个被比较的名字MOVAX,DIMOVBX,SIREPECMPSBJBENS30小于或等于不用交换CALLNPXCHGNS30MOVSI,AXCMPSI,ENDADDRJBENS20CMPSWAPPED,0JNZNS10RETNAME_SORTENDPNPXCHGPROCNEARMOVCX,14LEADI,TEMPMOVSI,BXREPMOVSWMOVELOWERITEMTOSAVEMOVCX,14MOVDI,BXREPMOVSWMOVCX,14LEASI,TEMPREPMOVSWMOVSWAPPED,1RETNPXCHGENDPDISP_ALLPROCNEARMOVAH,09HLEADX,MESS5INT21HLEASI,TEL_TABDA10LEADI,TEMPMOVCX,14REPMOVSWMOVAH,09HLEADX,TEMPINT21HDECCOUNTJNZDA10RETDISP_ALLENDPNAME_SEARCHPROCNEARLEASI,TEL_TABMOVBX,SIADDENDADDR,28NASE10LEADI,_NAME存放待查找的人名地址MOVCX,10REPECMPSWJCXZNASE_EXIT相等ADDBX,28表中下一个比较的人名MOVSI,BXCMPSI,ENDADDRJBENASE10NOTINTABMOVCX,1RETNASE_EXITMOVSI,BXLEADI,TEMPMOVCX,14REPMOVSWRETNAME_SEARCHE

温馨提示

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

评论

0/150

提交评论