版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《汇编语言言程序设设计》课课程设计计题目:人事事档案文文件管理理2013--11--26设计目的汇编语言课课程设计计是对所所学课程程内容全全面、系系统的总总结、巩巩固和提提高的一一项课程程实践活活动。根根据汇编编语言的的特点,选选择相应应的题目目,在老老师的指指导下,由由学生独独立完成成。课程程设计要要求同学学们熟悉悉汇编语语言的编编程,BBIOSS中断调调用、系系统功能能调用、磁磁盘数据据的查询询、存取取、图形形颜色的的显示与与调整等等相关知知识。通通过课程程设计,一一方面提提高运用用汇编语语言编程程解决实实际问题题的能力力,另一一方面使使同学们们更深入入的了解解计算机机系统内内部的有有关知识识,为以以后的学学习和系系统开发发奠定良良好的基基础。二.设计内内容在文档中创创建一个个perrsonn.txxt的文文本文件件,它包包含idd号、姓姓名、年年龄、性性别、电电话、通通信地址址等六项项内容,先先编写一一项如下下图界面面的功能能:实现如下功功能:i命令,实实现数据据输入,在在末尾添添加f命令,实实现数据据查找,按按名字进进行查找找d命令,实实现数据据的删除除,按名名字进行行查找删删除。o命令,实实现数据据的排序序,按名名字进行行排序l命令,实实现数据据的显示示,q命令,实实现退出出,并将将数据重重新写入入三.程序设设计原理理(1)本本次实验验是模块块化程序序设计思思想,通通过一个个主程序序,调用用其他模模块的子子程序,①:文件打打开,如如果能打打开文件件便读取取其中的的内容,否否则的话话,便创创建文件件,接着着执行以以后的代代码。②:宏的定定义:实实验中做做了一个个显示字字符串的的宏,方方便以后后显示各各种字符符串③:背景颜颜色的实实现:通通过调用用intt100h的功功能,实实现s草草绿色的的背景④:插入程程序:通通过查寻寻是否存存在当前前输入的的id,,如果不不存在,则则继续输输入,如如果存在在则停止止输入。输输入的时时候计算算输入的的字节,不不足的用用空格补补充,并并将输入入的内容容保存到到内存里里,当关关闭文件件时,保保存到文文件里,同同时设置置指针指指向数据据段的末末尾。
程序的框图图如下::cmpal,,’I’’jnzerrrorcalllinnputtY/N输入id输入Y/N输入id输入输入id进行检查,调用check函数,设置flag=bp,初始值设置bp=0,如果存在bp=0,否则bp=1;输入id进行检查,调用check函数,设置flag=bp,初始值设置bp=0,如果存在bp=0,否则bp=1;CCheck调用storid保存到stu中,BP=0?N调用storid保存到stu中,BP=0?Y保存到数据段Y保存到数据段调用inputname输入名字调用inputname输入名字调用inputsex输入性别调用inputsex输入性别输入年龄输入年龄调用inputold调用inputold调用inputaddress输入地址调用inputaddress输入地址调用inputphone,如果输入结束,通过回车键进入主页面。输入电话调用inputphone,如果输入结束,通过回车键进入主页面。输入电话RRet结束⑤:显示程程序,首首先判断断文件中中是不是是有内容容,通过过设置是是一个全全局coountt记录文文件的个个数,如如果记录录为零,则则退出,返返回主菜菜单,否否则每次次从内存存中取660个字字节。到到另一个个缓存显显示,用用couunt计计数,显显示一次次,coountt--;;⑥:查找模模块::首先提提示用户户输入想想要查找找的名字字,调整整指针,然然后用字字符串ccmpssw比较较名字,直直到最后后一个名名字为止止,若找找到则显显示,不不存在,则则提示;;程程序框图图:名字查找名字查找关键代码:关键代码:leasi,stuaddsi,10;指向记录第一个人的姓名movbx,sinase10:leadi,_name;存放待查人的姓名地址movcx,5repecmpsw输入要查找的名字输入要查找的名字si->数据段第一个名字di=输入的名字bp=0si->数据段第一个名字di=输入的名字bp=0名字比较名字比较Si移到下一个名字Si移到下一个名字找到名字找到名字Ysi=指向学生信息头Nsi=指向学生信息头输出学生信息输出学生信息CCount-1COUNT=0?NCOUNT=0?RET结束RET结束⑦:删除程程序:通通过名字字进行查查找,如如果不存存在就报报错,如如果存在在多条记记录进行行提示,选选择删除除那条记记录:Bp作为一个标志:Bp<=1;无记录Bp作为一个标志:Bp<=1;无记录3>Bp>1;有一条记录Bp>3;有多调记录名字删除repmovswRET结束substu1,60subcount1,1Si=di下一个di=del[bp]di=del[bx]删除第bx个记录Bx=bx*2BP>3?Bp>1?名字删除repmovswRET结束substu1,60subcount1,1Si=di下一个di=del[bp]di=del[bx]删除第bx个记录Bx=bx*2BP>3?Bp>1?查找名字相同的记录查找名字相同的记录NYNNYYSiendaddrSiendaddrsi>=endaddrNNsi>=endaddrY⑧:排序程程序:若若只有一一条记录录或者没没有直接接跳出,否否则按照照Asccii码码排序,排排序用冒冒泡排序序算法::程序框框图:endaddr->倒数第二个名字si->endaddr->倒数第二个名字si->第一个名字swapped=0这里采用冒泡算法,从第一个数开始对相邻的两个数进行比较,如果次序不对,进行交换。从图中可以看出,为了提高效率,设置了一个标志位,每次进入外循环,就将标志位值零,在内循环每做一次交换,就将该标志位值1,在每次内循环结束后,可测试标志位是否是0,如果是0.则结束排序,否则在进行一次外循环。这种算法效率较高一些。这里采用冒泡算法,从第一个数开始对相邻的两个数进行比较,如果次序不对,进行交换。从图中可以看出,为了提高效率,设置了一个标志位,每次进入外循环,就将标志位值零,在内循环每做一次交换,就将该标志位值1,在每次内循环结束后,可测试标志位是否是0,如果是0.则结束排序,否则在进行一次外循环。这种算法效率较高一些。di->si的下一个名字Ax=dibx=siAx=dibx=sirepecmpsbrepecmpsbSi<=di?YSi<=di?didißàsiNNSwapped=1Swapped=1Si=axSi=axSi<=endaddrSi<=endaddrSwapped=0?NSwapped=0?NY结束ret结束ret⑨:退出程程序:打打开文件件,把数数据段的的内容读读入文件件,否则则创建文文件,同同是根据据couunt,写写入最后后一条记记录,在在末尾‘‘’,关闭闭文件。四.程序分分工苏林东:模模块的整整合与颜颜色的调调配,还还有文件件的建立立与相关关模块的的制作吴威:输入入模块和和删除模模块的制制作,关关闭文件件的制作作。曹锦峰:查查询模块块和排序序模块的的制作。五.源程序序及运行行结果::(1)源程程序:dataseggmennt HHDB00,0,,':'' MMDB00,0,,':'' SS11DBB0,,0 messs1db'iid:'','$'' messs2db'nnamee:',,'$'' messs3db'oold::','$'' messs4db'ssex::','$'' messs5db'aaddrresss:',,'$'' messs6db'pphonnennumbber::','$'' messs7db'eenteereerroor!!!!',,0dhh,0aah,''$' messs8db'iid',,8ddup(('''),'nnamee',55duup('''),'oold','seex'','aaddrresss',,5ddup(('''),'ttelpphonne',,13,,10,,'$'' messs9db'sstuddenttinnforrmattionninnthhettablleiis:'',133,100,'$$' messs100dbb'plleasseeenteertthenamme:'',133,100,'$$' messs111dbb133,100,'OOK,yyouareequuit,,wellcommetthenexxt!!!','$'' messs133dbb'soorryy,crreatteffileeissnootssucccesss!!'',133,100,'$$' messs144dbb'NooReecorrds!!!!'',133,100,'$$' messs155dbb'soorryy,thheiinpuutiisnnotfouund!!!!'',133,100,'$$' messs166dbb'Dooyoouwwantttoodeelettetthissmeessaae(yy/n))?',,13,,10,,'$'' messs177dbb'plleassecchooosewhiichoneedooyoouwwantttoodeelette(11,2....)):',,'$'' messs188dbb'Deelettessucccesss!!'',133,100,'$$' messs199dbb'soorryy,thheiidiisssamee,ppleaaseinpputagaain!!!',,13,,10,,'$'' messs200dbb'plleasseppresssttoppasttennexttpaage'',133,100,'$$'messs211dbb'Veerygoood,tthesorrtiisssuceessfful!!!',,13,,10,,'$''idparrlaabellbyyte maxiilenndbb100 actiilenndbb? idddb110ddup((?);学号namepparlabbelbyttemmaxnnlenndbb100aactnnlenndbb?__nammeddb110ddup((?);姓名oldpaarllabeelbbyteemmaxoolenndbb3aactoolenndbb?oolddb33duup(?);;年龄sexpaarllabeelbbyteemmaxsslenndbb5aactsslenndbb?ssexdb55duup(?);性别addreesspparlabbelbyttemmaxaalenndbb155aactaalenndbb?aadddb115ddup((?) ;地址phoneeparrlaabellbyytemmaxpplenndbb155aactpplenndbb?pphonneddb115ddup((?);电话号号码displlmaacroox;;显示的的宏leaddx,xxmovaah,009innt221henndmsttuddb550ddup((58dupp(''),,13,,10));内存空空间teempdb660ddup(''),,'$'';临时存存储空间间crrlfdb113,110,''$';;换行回回车meenudb'***********************wwelccom******************************'',133,100db'*ii---------innputt*',,13,,10db'*ff---------fiind*',,13,,10db'*dd---------deelette*',,13,,10db'*oo---------soort*',,13,,10db'*ll---------liist*',,13,,10db'*qq---------quuit*',,13,,10db'****************************************************************',,13,,10db'plleasseiinpuuttthechooicee:',,'$''sttu1dw?;作为存存放末尾尾的指针针adddreessdb'ff:\ppersson..txtt',00;路径coountt1ddb00;临时统统计输入入的个数数coounttdbb0;统计输输入的个个数coountt2ddb00;检查学学\号时候候用的fccodeedww?;文件代代号enndadddrdw?;排序时时用到,及及存储末末尾指针针ennd1db'';coountt3ddb00;显示的的时候用用,分页页deelddw220ddup((?)swwapppeddb00;交换标标志位dataendds;----------------------代码码段---------------------------codeseggmenntassummeccs:ccodee,dss:daata,,es::dattamaainproocffarmovaax,ddataamovdds,aaxmovees,aaxstartt:movaax,006000hcalllsscreenleaddi,sstucallloopennclddmovsstu11,diimenu11:dissplmennu;显示菜菜单movaah,001intt211hmovbbl,aaldissplcrllfmovaal,bblandaal,55fh;把输入入的选择择都转化化为大写写inserrt:cmpaal,''I'jnzzliistcallliinpuutjmppmeenu11list::cmpaal,''L'jnzzdeelecalllddispplayydissplcrllfjmppmeenu11dele::cmpaal,''D'jnzzfiindcalllddeleetdissplcrllfjmppmeenu11find::cmpaal,''F'jnzzsoortcalllssearrchdissplcrllfjmppmeenu11sort::cmpaal,''O'jnzzquuitcalllnnameesorrtdissplcrllfdissplmesss211jmppmeenu11quit::cmpaal,''Q'jzoveererrorr:dissplmesss7jmppmeenu11over::ccalllclloseeddispplmmesss11movaah,44chintt211hrettmaiineendpp;------------------插入入模块--------------------inputtprrocneaarmovddi,sstu11inputtlooop:clldagainn:movbbp,00diispllmeess11caallinpputiid;输入学学号cmpaactiilenn,0jzzA110cmpccounnt1,,50jeeA110caallcheeck;检查学学号是否否重复cmpbbp,00jnnzaagaiincaallstooridd;;保存到到stuudiispllmeess22caallinpputnnamee;输入名名字diispllmeess33caallinpputoold;输入年年龄diispllmeess44caallinpputssex;输入性性别diispllmeess55caallinpputaaddrresss;;输入地地址diispllmeess66caallinpputpphonne;输入电电话addddi,22jmmpiinpuutlooopA10:movaah,ccounnt1;记录数数movccounnt,aahmovsstu11,diiretinputtenndp;---------------输输入学号号模块-----------------------inputtidproocnnearrmovaah,00ahleaddx,iidpaarinnt221hdiispllcrrlfmovbbh,00movbbl,aactiilennmovcxx,100subccx,bbxloopnn:moviid[bbx],,20hhincbbxloooplooopnreetinputtidenddp;---------------------相同学学号检查查段----------------checkkprrocneaarmovbbp,00movaah,ccounnt1movccounnt2,,ahmovssi,sstu11subssi,660moveendaaddrr,sii;指向最最后一条条记录的的学号leassi,sstumovbbx,ssinase11:leaddi,iid;存放学学号的偏偏移地址址movccx,55reepecmppswjccxznasseexxjmmpnnasee2naseeex:diispllmeess119movbbp,11jmmpmmm1nase22:addbbx,660movssi,bbxdecccounnt2jnnznnasee1mm1:reetcheckkenndp;---------------------保存学学号模块块------------------storiidpproccneearmovddi,sstu11incccounnt1ccldleassi,iidmovccx,55rrepmovvswrretstoriideendpp;-------------------输输入名字字-----------------inputtnammepproccneearmovaah,00ahleaddx,nnameeparriint21hhddispplccrlffmovbbh,00movbbl,aactnnlennmovccx,110subccx,bbxin20::mov__namme[bbx],,20hh;剩余的的充填空空格incbbxllooppinn20ccldleassi,__nammemovccx,55rrepmovvswrretinputtnammeeendpp;-------------------输输入年龄龄------------------------inputtolddprrocneaarmovaah,00ahleaddx,ooldppariint21hhddispplccrlffmovbbh,00movbbl,aactoolennmovccx,33movccx,bbxlo20::movoold[[bx]],200hincbbxlloopploo20ccldleassi,ooldmovccx,33rrepmovvsbrretinputtolddenndp;-------------------输输入性别别------------------------inputtsexxprrocneaarmovaah,00ahleaddx,ssexppariint21hhddispplccrlffmovbbh,00movbbl,aactsslennmovccx,55subccx,bbxis20::movssex[[bx]],200hincbbxlooopis220clldleassi,ssexmovccx,55reppmoovsbbreetinputtsexxenndp;-------------------输输入地址址-------------------------inputtadddressspproccneearmovaah,00ahleaddx,aaddrresssparrinnt221hdiispllcrrlfmovbbh,00movbbl,aactaalennmovccx,115subccx,bbxia20::movaad[bbx],,20hhincbbxlooopia220clldleassi,aadmovccx,115reepmmovssbreetinputtadddressseendpp;---------------------输入电电话-----------------------inputtphooneproocnnearrmovaah,00ahleaddx,pphonnepaarinnt221hdiispllcrrlfmovbbh,00movbbl,aactpplennmovccx,115subcxx,bxxip20::movpphonne[bbx],,20hhincbbxlooopiip200clddleassi,pphonnemovccx,115reppmoovsbbrettinputtphooneenddp;---------------------timme时间间-----------------------------timeproocnnearr;puushax;;puushbx;puushcx;pusshddxpushdsmovaax,00pushaxmovaax,ddataamovdds,aax AGAIIN1::movaah,22ch;读取系系统时间间CHH:CL---时::分DHH:DL---秒::百分秒秒 int21hhMOVBBX,,OFFFSETTHHHMOVAAL,CCH CALLLC116_110;;转换ALL中16进制制为100进制,并填入入相应位位置MOVBBX,,OFFFSETTMMMMOVAAL,CCL;;分 CALLLC116_110MOVBBX,,OFFFSETTSSS1MOVAAL,DDH;;秒 CALLLC116_110MOVAAH,22;光标定定位MOVDDH,00;首行MOVDDL,770;;70列列MOVBBH,00 INT10HHMOVCCX,88MOVSSI,OOFFSSETHH NN1::MOVAAH,00EH;电传方方式写字字符(一次1个)MOVAAL,[[SI]]MOVBBL,00 INT10HHINCSSI LOOPPNNN1MOVAAH,11 INT16HH;JNZDOWWN;;按任一一键结束束 JMPAGAAIN11;DOWNN:;popds;popdx;popcx;popbx;popax;RET rettimeenddp;---------------------进制转转换-----------------------C16_110PPROCCNEEARPUSHCX;将AL中的的16进制制转为110进制制MOVAAH,00MOVCCX,110DDIVCCLADDAAX,330300HMOV[[BX]],ALLINCBBXMOV[[BX]],AHHPOPCCX REET C16__10ENDDP;;---------------------关闭文文件-----------------------closeeprrocneaarmovaah,ccounnt1movccounnt,aahcmpccounnt,00jbbeeexitt10movaah,33dhmovaal,22leaddx,aaddrresssinnt221hjnncyy2movaah,33chmovccx,000leaddx,aaddrresssinnt221hjccexxit110y2:movffcodde,aaxmovbbx,ffcoddeleassi,sstuy1:leaddi,ttemppmovccx,330reepmmovsswleaddx,ttemppmovccx,660movaah,440hinnt221hsubccounnt,11jnnzyy1leaddx,eend11movccx,22movaah,440hinnt221hmovbbx,ffcoddemovaah,33ehinnt221hexit110:reetcloseeenndp;---------------------打开文文件-------------------------openproocnnearrleaddx,aaddrresssmovaah,33dhmovaal,002intt211hjcp9;;不存在在则创建建文件movffcodde,aax;保存文文件代号号p1::movaah,33fhmovbbx,ffcoddemovccx,660;;读取文文件的记记录数(一一条记录录)leaddx,ttemppiint21hhjjcpp9movbbl,ttemppcmpbbl,'''jjzpp6;;读取结结束;;leassi,ttemppmovccx,330rrepmovvswincccounnt1jjmpp1p99:diispllmeess113p66:movbbx,ffcoddemovaah,33ehiint21hhrretopenenddp;-------------------------------删删除模块块---------------------------------delettprrocneaarmovssi,sstu11moveendaaddrr,siiccalllseearcchcmpbbp,11jjaep3rretp3:cmpbbp,33jjaep4movddi,ddel[[bp]]jjmpl1p4:ddispplmmesss17ccalllinnputtnummcmpbbx,bbpjjbep5ddispplccrlffddispplmmesss7jjmpp4p5:movddi,ddel[[bx]]l1:diispllcrrlfdiispllmeess116movaah,001hinnt221hcmpaal,''y'jzzd11cmpaal,''Y'jzzd11cmpaal,''n'jzzexxit77cmpaal,''N'jzzexxit77diispllmeess77jmmpll1d1:movssi,ddiaddssi,660d2:movccx,330reppmoovswwcmpssi,eendaaddrrjnbbepp01jmppd22p01:subsstu11,600subccounnt1,,1dissplcrllfdissplmesss188dissplcrllfexit77:retdelettenndp;-------------------------------查查找模块块--------------------------------searcchpproccneearmovaah,ccounnt1movccounnt,aahmovbbp,00ccldddispplmmesss10ccalllinnputtnamme1;输入要要查找的的人名ccalllnaamessearrchcmpbbp,00jjbes2jjmpexiit6s2:ddispplmmesss15exit66:rretsearccheendpp;----------------------计算算要删除除的是哪哪一个---------------------------------------inputtnummprrocneaarmovbbx,00it1::movaah,11iint21hhmovddl,aalsubaal,330hjjleexitt1;;输入为为零cmpaal,99Djjgeexitt1ccbwxchgax,,bxmovccx,110dmulccxxchgax,,bxaddbbx,aaxjjmpit11exit11:movaax,bbxmovbbl,22mulbblmovbbx,aaxrretinputtnummenndp;------------------------------查找找姓名的的函数模模块输入入--------------inputtnamme1proocnnearrmovaah,00ahleaddx,nnameeparriint21hhddispplccrlffmovbbh,00movbbl,aactnnlennmovccx,110subccx,bbxin21::mov__namme[bbx],,20hhincbbxllooppinn21rretinputtnamme1enddp;---------------------------------姓名搜搜索-----------------------namessearrchproocnnearrleassi,sstuaddssi,110;指向记记录第一一个人的的姓名movbbx,ssinase110:leaddi,__namme;存放待待查人的的姓名地地址movccx,55reepecmppswjccxznasseexxitjmmpnnasee20naseeexitt:movssi,bbxsubssi,110addbbp,22movddel[[bp]],siileaddi,ttemppmovccx,330reepmmovsswdiispllteempnase220:addbbx,660movssi,bbxdecccounntjnnznnasee10reetnamessearrchenddp;-------------------------------排排序模块块----------------------------namessorttprrocneaarcmpccounnt1,,1jbbeeexitt5movddi,sstu11subddi,1110;调整指指针moveendaaddrr,dii;调整指指针指向向倒数第第二个名名字NS10::movsswapppedd,0leassi,sstuaddssi,110NS20::movccx,110movddi,ssiaddddi,660;;下一个个被比较较的名字字movaax,ddimovbbx,ssireepecmppsbjbbeNNS300caallNPXXCHGG;小于等等于就不不用交换换NS30::movssi,aaxcmpssi,eendaaddrrJBBENNS200cmpsswapppedd,0jnnzNNS100exit55:rettnamessorttenndp;---------------------------------交换信信息---------------------
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年常德科技职业技术学院单招职业适应性考试题库含答案详解(突破训练)
- 2026年广东江门中医药职业学院单招职业适应性测试题库及参考答案详解(新)
- 2026年广东省肇庆市单招职业适应性测试题库附答案详解(考试直接用)
- 2026年广西工业职业技术学院单招职业倾向性考试题库(含答案详解)
- 2026年山西财贸职业技术学院单招职业适应性测试题库含答案详解(a卷)
- 2026年广东省清远市单招职业倾向性测试题库附答案详解(综合卷)
- 2026年广西制造工程职业技术学院单招职业技能测试题库有答案详解
- 2026年广东交通职业技术学院单招综合素质考试题库附参考答案详解(a卷)
- 2026年广西安全工程职业技术学院单招职业技能考试题库含答案详解ab卷
- 2026年广东省汕头市单招职业倾向性测试题库带答案详解(典型题)
- 饲料厂6S管理标准
- 具身智能+老年辅助生活机器人情感交互与功能设计研究报告
- 新能源汽车故障诊断与排除全套教学课件
- 企业利润分配年度方案及执行细则
- 高空坠落安全事故培训课件
- 广州建筑工程安全培训课件
- 2025至2030中国肥料原料行业发展研究与产业战略规划分析评估报告
- 汽车吊安全培训教育课件
- 2025年国有企业总经理竞聘面试题及参考答案指南
- 招标投标实施条例课件
- 新课标文科全科-2026高考大纲TXT便利版
评论
0/150
提交评论