《汇编人事档案管理程序设计报告6933.docx》由会员分享,可在线阅读,更多相关《汇编人事档案管理程序设计报告6933.docx(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、汇编语语言程序序设计课课程设计计题目:人人事档案案文件管管理20133-111-266一 设计目的的汇编语言言课程设设计是对对所学课课程内容容全面、系系统的总总结、巩巩固和提提高的一一项课程程实践活活动。根根据汇编编语言的的特点,选选择相应应的题目目,在老老师的指指导下,由由学生独独立完成成。课程程设计要要求同学学们熟悉悉汇编语语言的编编程,BBIOSS中断调调用、系系统功能能调用、磁磁盘数据据的查询询、存取取、图形形颜色的的显示与与调整等等相关知知识。通通过课程程设计,一一方面提提高运用用汇编语语言编程程解决实实际问题题的能力力,另一一方面使使同学们们更深入入的了解解计算机机系统内内部的有有
2、关知识识,为以以后的学学习和系系统开发发奠定良良好的基基础。二设计计内容在文档中中创建一一个peersoon.ttxt的的文本文文件,它它包含iid号、姓姓名、年年龄、性性别、电电话、通通信地址址等六项项内容,先先编写一一项如下下图界面面的功能能:实现如下下功能:(1) i命令,实实现数据据输入,在在末尾添添加(2) f命令,实实现数据据查找,按按名字进进行查找找(3) d命令,实实现数据据的删除除,按名名字进行行查找删删除。(4) o命令,实实现数据据的排序序,按名名字进行行排序(5) l命令,实实现数据据的显示示,(6) q命令,实实现退出出,并将将数据重重新写入入三程序序设计原原理 (1
3、1)本次次实验是是模块化化程序设设计思想想,通过过一个主主程序,调调用其他他模块的的子程序序,:文件件打开,如如果能打打开文件件便读取取其中的的内容,否否则的话话,便创创建文件件,接着着执行以以后的代代码。:宏的的定义:实验中中做了一一个显示示字符串串的宏,方方便以后后显示各各种字符符串:背景景颜色的的实现:通过调调用innt 110h的的功能,实实现s草草绿色的的背景:插入入程序:通过查查寻是否否存在当当前输入入的idd,如果果不存在在,则继继续输入入,如果果存在则则停止输输入。输输入的时时候计算算输入的的字节,不不足的用用空格补补充,并并将输入入的内容容保存到到内存里里,当关关闭文件件时,
4、保保存到文文件里,同同时设置置指针指指向数据据段的末末尾。程序的框框图如下下: cmpp all,II jnzz errrorr calll iinpuutY/N输入id输入 输入id进行检查,调用check函数,设置flag=bp,初始值设置bp=0,如果存在bp=0,否则bp=1; CheckY调用storid保存到stu中,BP=0?NY保存到数据段Y调用inputname输入名字调用inputsex输入性别输入年龄调用inputold调用inputaddress输入地址调用inputphone,如果输入结束,通过回车键进入主页面。输入电话Ret结束:显示示程序,首首先判断断文件中中是不
5、是是有内容容,通过过设置是是一个全全局coountt记录文文件的个个数,如如果记录录为零,则则退出,返返回主菜菜单,否否则每次次从内存存中取660个字字节。 到另一一个缓存存显示,用用couunt计计数,显显示一次次,coountt-;:查找找模块 :首先先提示用用户输入入想要查查找的名名字,调调整指针针,然后后用字符符串cmmpsww比较名名字,直直到最后后一个名名字为止止,若找找到则显显示,不不存在,则则提示; 程序框框图:名字查找关键代码:lea si,stu add si,10 ;指向记录第一个人的姓名 mov bx,sinase10: lea di,_name ;存放待查人的姓名地址
6、 mov cx,5 repe cmpsw输入要查找的名字si-数据段第一个名字 di=输入的名字bp=0名字比较Si移到下一个名字找到名字Y si=指向学生信息头 NN 输出学生信息Count-1COUNT=0? NRET结束Y:删除除程序:通过名名字进行行查找,如如果不存存在就报报错,如如果存在在多条记记录进行行提示,选选择删除除那条记记录:Bp作为一个标志:BpBp1;有一条记录Bp3;有多调记录程序框图图:名字删除rep movswRET结束sub stu1,60 sub count1,1Si=di下一个di=delbpdi=delbx删除第bx个记录Bx=bx*2BP3?Bp1?查找名
7、字相同的记录 NN Y N YSiendaddrsi=endaddr N Y:排序序程序:若只有有一条记记录或者者没有直直接跳出出,否则则按照AAsciii码排排序,排排序用冒冒泡排序序算法:程序框框图:endaddr-倒数第二个名字si-第一个名字swapped=0这里采用冒泡算法,从第一个数开始对相邻的两个数进行比较,如果次序不对,进行交换。从图中可以看出,为了提高效率,设置了一个标志位,每次进入外循环,就将标志位值零,在内循环每做一次交换,就将该标志位值1,在每次内循环结束后,可测试标志位是否是0,如果是0.则结束排序,否则在进行一次外循环。这种算法效率较高一些。di-si的下一个名字A
8、x=di bx=sirepe cmpsbSi=di? Ydisi NSwapped=1Si=axSi=endaddrSwapped=0?N NN YY结束ret:退出出程序:打开文文件,把把数据段段的内容容读入文文件,否否则创建建文件,同同是根据据couunt,写写入最后后一条记记录,在在末尾,关闭闭文件。四程序序分工苏林东:模块的的整合与与颜色的的调配,还还有文件件的建立立与相关关模块的的制作吴威:输输入模块块和删除除模块的的制作,关关闭文件件的制作作。曹锦峰:查询模模块和排排序模块块的制作作。五源程程序及运运行结果果:(1)源源程序:dataa seegmeent HHH DBB 0,0,
9、: MMM DBB 0,0,: SSS1 DDB 00,0 meess11 dbbidd:,$ meess22 dbbnaame:,$ meess33 dbbolld:,$ meess44 dbbseex:,$ meess55 dbbadddreess:,$ meess66 dbbphhonee nuumbeer:,$ meess77 dbbennterr errrorr!,00dh,0ahh,$ meess88 dbbidd,88 duup( ),nnamee,55 duup( ),oold ,seex , aaddrresss ,5 ddup( ),ttelpphonne,13,10,$
10、meess99 dbbsttudeent infformmatiion in thee taablee iss:,13,10,$ meess110 ddbppleaase entter thee naame:,113,110,$ meess111 ddb 113,110,OK,youu arre qquitt,weelcoome thee neext!,$ meess113 ddbssorrry,ccreaate fille iis nnot succcesss!,113,110,$ meess114 ddbNNo RRecoordss!,113,110,$ meess115 ddbssorr
11、ry,tthe inpput is nott fooundd!,113,110,$ meess116 ddbDDo yyou wannt tto ddeleete thiis mmesssae(y/nn)?,133,100,$ meess117 ddbppleaase chooosee whhichh onne ddo yyou wannt tto ddeleete(1,22.):,$ meess118 ddbDDeleete succcesss!,113,110,$ meess119 ddbssorrry,tthe id is samme ,pleeasee innputt aggainn!
12、,133,100,$ meess220 ddbppleaase preess to passte nexxt ppagee,113,110,$ meess221 ddbVVeryy goood,thee soort is successsfull!,133,100,$idpaar llabeel bbyteemaxxileen ddb 110acttileen ddb?id db 110 ddup(?) ;学号nameeparr laabell byyte maxxnleen ddb 110 acttnleen ddb? _naame db 110 ddup(?) ;姓名oldppar lab
13、bel bytte maxxoleen ddb 33 acttoleen ddb? oldd dbb 3 dupp(?) ;年龄sexppar labbel bytte maxxsleen ddb 55 acttsleen ddb? sexx dbb 5 dupp(?) ;性别addrresssparr laabell byyte maxxaleen ddb 115 acttaleen ddb? ad db 115 ddup(?) ;地址phonnepaar llabeel bbytee maxxpleen ddb 115 acttpleen ddb? phoone db 115 ddup(?
14、) ;电话号号码disppl mmacrro xx ;显示的的宏lea dx,xmov ah,09 iint 21hh eendmm sstu db 550 ddup(58 dupp ( ),13,10) ;内存空空间 ttempp dbb 600 duup ( ),$;临时存存储空间间 ccrlff dbb 133,100,$;换行回回车 mmenuu dbb* weelcoom *,13,10db* i-iinpuut *,133,100db* f-ffindd *,133,100db* d-ddeleete *,133,100db* o-ssortt *,133,100db* l-lli
15、stt *,133,100db* q-qquitt *,133,100db*,133,100dbppleaase inpput thee chhoicce:,$ sstu11 dww?;作为存存放末尾尾的指针针 aaddrresss dbbf:peersoon.ttxt,0 ;路径 ccounnt1 db 00 ;临时统统计输入入的个数数 ccounnt ddb 00;统计输输入的个个数 ccounnt2 db 00;检查学学号时候候用的 ffcodde ddw?;文件代代号 eendaaddrr dww?;排序时时用到,及及存储末末尾指针针 eend11 dbb ; ccounnt3 db
16、00;显示的的时候用用,分页页 ddel dw 220 ddup(?) sswapppedd dbb 0 ;交换标标志位dataa ennds;-代代码段-codee seegmeentassuume cs:codde,dds:ddataa,ess:daata mmainn prroc farrmov ax,dattamov ds,axmov es,axstarrt:mov ax,06000h caall scrrenlea di,stuu caall opeen clldmov stuu1,ddimenuu1: diispll meenu ;显示菜菜单mov ah,01 innt 221hm
17、ov bl,al diispll crrlfmov al,bland al,5fhh ;把输入入的选择择都转化化为大写写inseert:cmp al,I jnnz llistt caall inpput jmmp mmenuu1listt:cmp al,L jnnz ddelee caall dissplaay diispll crrlf jmmp mmenuu1delee: cmp al,D jnnz ffindd caall dellet diispll crrlf jmmp mmenuu1findd:cmp al,F jnnz ssortt caall seaarchh diispll
18、crrlf jmmp mmenuu1 sortt:cmp al,O jnnz qquitt caall nammesoort diispll crrlf diispll meess221 jmmp mmenuu1quitt:cmp al,Q jzz ovvererroor: diispll meess77 jmmp mmenuu1overr: calll cclosse disspl messs111mov ah,4chh innt 221h reet maain enddp;-插插入模块块- inpuut pprocc neearmov di,stuu1inpuutlooop: ccldag
19、aiin:mov bp,0 ddisppl mmesss1 ccalll innputtid ;输入学学号cmp acttileen,00 jjz AA10cmp couunt11,500 jje AA10 ccalll chheckk ;检查学学号是否否重复cmp bp,0 jjnz agaain ccalll sttoriid ;保存到到stuu ddisppl mmesss2 ccalll innputtnamme ;输入名名字 ddisppl mmesss3 ccalll innputtoldd ;输入年年龄 ddisppl mmesss4 ccalll innputtsexx ;输入
20、性性别 ddisppl mmesss5 ccalll innputtadddresss ;输入地地址 ddisppl mmesss6 ccalll innputtphoone ;输入电电话add di,2 jjmp inpputllooppA10:mov ah,couunt11 ;记录数数mov couunt,ahmov stuu1,ddi retinpuut eendpp;-输入学学号模块块-inpuutidd prroc neaarmov ah,0ahhlea dx,idppar iint 21hh ddisppl ccrlffmov bh,0mov bl,acttileenmovccx,
21、110sub cx,bxlooppn:mov idbx,200hinc bx lloopp looopnn rretinpuutidd enndp;-相同同学号检检查段-checck pprocc neear mov bp,0mov ah,couunt11mov couunt22,ahhmov si,stuu1sub si,60mov enddadddr,ssi;指向最最后一条条记录的的学号lea si,stuumov bx,sinasee1:lea di,id;存放学学号的偏偏移地址址mov cx,5 rrepee cmmpsww jjcxzz naaseeex jjmp nasse2nas
22、eeex: ddisppl mmesss19mov bp,1 jjmp mm11nasee2:add bx,60mov si,bxdec couunt22 jjnz nasse1mm1: rretchecck eendpp;-保存存学号模模块-storrid prooc nnearrmov di,stuu1inc couunt11 clddlea si,idmov cx,5 repp moovsww rettstorrid enddp;-输入名名字-inpuutnaame prooc nnearrmov ah,0ahhlea dx,nammepaar intt 211h disspl crll
23、fmov bh,0mov bl,acttnleenmov cx,10sub cx,bxin200:mov _naamebx,200h ;剩余的的充填空空格inc bx looop iin200 clddlea si,_naamemov cx,5 repp moovsww rettinpuutnaame enddp;-输入年年龄-inpuutolld pprocc neearmov ah,0ahhlea dx,olddparr intt 211h disspl crllfmov bh,0mov bl,acttoleenmov cx,3mov cx,bxlo200:mov olddbxx,220h
24、inc bx looop llo200 clddlea si,olddmov cx,3 repp moovsbb rett inpuutolld eendpp;-输入性性别-inpuutseex pprocc neearmov ah,0ahhlea dx,sexxparr intt 211h disspl crllfmov bh,0mov bl,acttsleenmov cx,5sub cx,bxis200:mov sexxbxx,220hinc bx lloopp iss20 ccldlea si,sexxmov cx,5 reep mmovssb rretinpuutseex eendpp
25、;-输入地地址-inpuutadddreess prooc nnearrmov ah,0ahhlea dx,adddressspaar iint 21hh ddisppl ccrlffmov bh,0mov bl,acttaleenmov cx,15sub cx,bxia200:mov adbx,200hinc bx lloopp iaa20 ccldlea si,admov cx,15 rrep movvsb rretinpuutadddreess enddp;-输入入电话-inpuutphhonee prroc neaarmov ah,0ahhlea dx,phooneppar iint
26、21hh ddisppl ccrlffmov bh,0mov bl,acttpleenmov cx,15subccx,bbxip200:mov phoonebx,200hinc bx looop ip220 clldlea si,phoonemov cx,15 reep mmovssb reetinpuutphhonee enndp;-tiime时时间-timee prroc neaar; ppushh axx; ;ppushh bxx; ppushh cxx; puush dx pushh dssmov ax,0pushh axx mov ax,datta mov ds,axAGAAIN11
27、:mov ah,2chh ;读取系系统时间间 CHH:CL-时:分 DHH:DL-秒:百分秒秒intt 211hMOV BX ,OFFFSEET HHHMOV AL,CHCALLL CC16_10 ;转换ALL中16进制制为100进制,并填入入相应位位置MOV BX ,OFFFSEET MMMMOV AL,CL ;分CALLL CC16_10MOV BX ,OFFFSEET SSS1MOV AL,DH ;秒CALLL CC16_10MOV AH,2 ;光标定定位MOV DH,0 ;首行MOV DL,70 ;700列MOV BH,0INTT 100HMOV CX,8MOV SI,OFFFSETT
28、 HHHNN11:MOV AH,0EHH ;电传方方式写字字符(一次1个)MOV AL,SIIMOV BL,0INTT 100HINC SILOOOP NNN1MOV AH,1INTT 166H;JNZZ DOOWN ;按任任一键结结束JMPP AGGAINN1;DOWWN:;popp dss;popp dxx;popp cxx;popp bxx;popp axx;RETTretttimee enndp;-进制制转换-C16_10 PROOC NNEARRPUSHH CXX ;将AL中的的16进制制转为110进制制MOV AH,0MOV CX,10DDDIV CLADD AX,30330HMO
29、V BXX,AALINC BXMOV BXX,AAHPOP CX RRETC166_100 ENNDP;-关闭闭文件-closse pprocc neearmov ah,couunt11mov couunt,ahcmp couunt,0 jjbe exiit100mov ah,3dhhmov al,2lea dx,adddresss iint 21hh jjnc y2mov ah,3chhmov cx,00lea dx,adddresss iint 21hh jjc eexitt10y2:mov fcoode,axmov bx,fcoodelea si,stuuy1:lea di,temmpm
30、ov cx,30 rrep movvswlea dx,temmpmov cx,60mov ah,40hh iint 21hhsub couunt,1 jjnz y1lea dx,endd1mov cx,2mov ah,40hh iint 21hhmov bx,fcoodemov ah,3ehh iint 21hhexitt10: rretclosse eendpp;-打开开文件-openn prroc neaarlea dx,adddresssmov ah,3dhhmov al,02 innt 221h jcc p99 ;不存在在则创建建文件mov fcoode,ax ;保存文文件代号号 p1
31、1:mov ah,3fhhmov bx,fcoodemov cx,60 ;读取文文件的记记录数(一一条记录录)lea dx,temmp intt 211h jc p9mov bl,temmpcmp bl, jz p6 ;读取结结束;lea si,temmpmov cx,30 repp moovswwinc couunt11 jmpp p11 pp9: ddisppl mmesss13 pp6:mov bx,fcoodemov ah,3ehh intt 211h rettopenn enndp ;-删除模模块-deleet pprocc neearmov si,stuu1mov enddaddd
32、r,ssi calll ssearrchcmp bp,1 jaee p33 rettp3: cmp bp,3 jaee p44mov di,dellbpp jmpp l11p4: disspl messs177 calll iinpuutnuumcmp bx,bp jbee p55 disspl crllf disspl messs7 jmpp p44p5:mov di,dellbxxl1: ddisppl ccrlff ddisppl mmesss16mov ah,01hh iint 21hhcmp al,y jjz dd1cmp al,Y jjz dd1cmp al,n jjz eexit
33、t7cmp al,N jjz eexitt7 ddisppl mmesss7 jjmp l1d1:mov si,diadd si,60d2:mov cx,30 reep mmovsswcmp si,enddadddr jnnbe p011 jmmp dd2p01:sub stuu1,660sub couunt11,1 diispll crrlf diispll meess118 diispll crrlfexitt7: rett deleet eendpp;-查找模模块-searrch prooc nnearrmov ah,couunt11mov couunt,ahmov bp,0 cldd disspl messs100 calll iinpuutnaame11 ;输入要要查找的的人名 calll nnameeseaarchhcmp bp,0 jbee s22 jmpp exxit66s2: disspl messs155exitt6: rett searrch enddp;-计计算要删删除的是是哪一个个-inpuutnuum pprocc neearmov bx,0 it11:mov ah,1 intt 211hmov dl,alsub al,30hh jl exiit
限制150内