




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机与信息工程学院《汇编语言》课程设计论文设计题目学生通讯录系统的设计专业计算机科学与技术班级学号姓名指导教师起止日期成绩课程设计任务书一、设计题目:学生通讯录系统二、设计的主要内容:本程序通过汇编语言来实现一个简单的学生通讯录系统管理。通过本次实验,目的是通过对汇编程序的设计,使我进一步熟练掌握了汇编程序中的一些相关命令的使用。将书本理论知识在现实中得到实际的应用,帮助我进一步的了解汇编语言编程的一些原理。提高自己的程序设计能力,本次程序的实现,是在老师的指导和同学们及自己的努力之下,对程序的反复分析与调试,最终达到了程序的正常运行,达到了本次课程设计的预期结果,完成本次试验的所要求的具体内容及任务。指导教师:教研室主任:课程设计任务书一、设计题目:二、设计的主要内容:指导教师:教研室主任:
指导教师评阅意见书评阅成绩:摘要本程序通过汇编语言来实现一个简单的学生通讯录。这个学生通讯录程序是在Windows平台上的Masm615进行编译的。此程序中提供一个通讯录主界面,用键盘选择相应的选项后,便可以执行相应操作.操作完毕时,将显示新的通讯录。你可以查看你想要知道的通讯录信息。按相应的程序中所定义的键盘字符后,将退出本程序。通过本次汇编程序的设计,使我进一步熟练掌握了汇编程序中的一些相关命令的使用。将书本理论知识在现实中的得到实际的应用,帮助我进一步的了解汇编语言编程的一些原理。关键字:数据段主程序子程序
AbstractThisprocedurethroughtheassemblylanguagetoachieveasimplestudentcontacts.ContactsstudentsthisprocessisontheWindowsplatformfortheMasm615compiled.Thisprocessprovidesaphonebookinthemaininterface,usingthekeyboardselecttheappropriateoption,youcanimplementthecorrespondingoperations.Arefinished,itwilldisplaythenewcontacts.Youcanseeyouwanttoknowtheaddressbookinformation.Accordingtothecorrespondingproceduresinthedefinitionofthekeyboardcharacters,itwillwithdrawfromthisprocess.Throughthiscompilationofthedesignprocess,Ifurthermasterthecompilationofsomeoftherelevantproceduresinorderofuse.Bookswillbetheoreticalknowledgeintherealworldofrealapplications,helpmetofurtherunderstandingofassemblylanguageprogrammingofsomeprinciple.Keywords:datasementmainprocesssubprogram目录摘要……………ⅠAbstract………Ⅰ一、背景分析及意义……………1二、总体设计思想………………1三、主要功能……………………5四、软硬件环境要求……………6五、程序流程图…………………6六、程序使用说明……………7设计总结………7参考文献………9附录……………10一、背景分析及意义设计一个学生通讯录系统,包括功能如下:1,学生信息添加功能2,学生信息删除功能3,学生信息查询功能4,学生信息自动排序5,包括学生信息如下:1)学号(关键字)2)姓名3)通讯地址......要求:信息用文件形势保存二、总体设计思想方案一:(程序代码未成功)简单的,在显示列表时以顺序形式显示而在文件中不是顺序的。方案一实现过程设计思路:将第一和第二个学生的信息分别读入BUF1和BUF2,进行比较如果BUF1>BUF2,REPMovsBUF1,BUF2再将第三个学生信息读入BUF2。如果BUF1<BUF2,将第三个学生信息读入BUF2,则显示BUF1的信息。依次直到读入BUF2的信息为空。再将第二个学生的信息读入BUF1,依次直到读入BUF1的信息为空。依次显示BUF1的信息到窗口。方案二:(未尝试编写代码)运用链状数据结构在文件中排序方案二实现过程设计思路:1)数据定义StudentstrucLinkdw0;链指针Numdb2dup(?)Namedb15dup(?)Addressdb50dup(?)Studentends2)读入数据3)拉链(建立链结构数据)4)扫描链(显示信息)方案三:(成功)在插入的同时进行排序方案三实现过程设计思路:1)光标位置变化:用42H移到文件尾,AX减一个学生信息字节数并记录AX,再将光标从文件头移到AX的位置2)将最后一个学生信息读入BUF2,BUF1和BUF2学号进行比较moval,buf2[si]cmpbuf1[si],alja写入BUF1中读入的信息cmpbuf1[si],aljb在BUF2中学生的信息向后移3)循环算法:代码段(datasegment)变量的定义和预置:datasegment〈学生通讯录界面信息变量〉〈出错信息变量〉〈变量结构体定义(studentstruc)studentstrucnumdb0,0namedb15dup(?)addressdb50dup(?)studentends宏定义(名字macro.......endm)showmacroaddress;界面显示light_m1macroa;光标位置light_m2macrolight_m3macroclearmacro;当前显示页面上滚clear1macroclear2macroagain_1macro;空格newlinemacro;换行show_itemmacroaddress;显示信息localnext1,next2getinmacroaddress,count;读入信息locallp1,lp2,input_end,exit数据段定义codesegmentmainprocfarassumecs:code,ds:data,es:datastartstart:movax,datamovds,axmovah,0moval,3int10h通讯录界面(show)选择操作:添加(i)删除(d)查询(q)列表(排序)(l)退出(e)具体操作:insertprocnear;插入queryprocnear;查询deleteprocnear;删除listprocnear;游览列表endcodeends;程序结束endstart三、主要功能这是一个学生通讯录系统,其中“I”表示以顺序插入,“L”表示浏览,“Q”表示查询,“E”表示退出,“D”表示删除。本程序实现了:(1)单独运行以上各功能,即在进入主菜单以后,点一功能键后关闭,再进入主菜单点别的功能键。如运行"address"文件后,在出现的主界面中点“I”,可插入数据,插入完以后,关闭;用同样的方法可运行其它的功能。注意:完成一次功能后要关闭重新再进入界面看上次操作的结果。(2)连续运行部分的功能。应将文件"address.txt"放在相应的路径下。如在本程序中,需将该文件放在"e:\address\address.txt"下。四、软硬件环境要求软件:MASM5.0逻辑,WINDOW或DOS操作系统,EDITplus或其他编辑程序;硬件:8086及以上机型;五、程序流程图学生通讯录系统流程图,如图所示:六、程序使用说明1:本程序可在windows98,windows2000,windowsxp上运行。2:使用方法:直接双击“address.exe”图标即可运行。进入程序后,按照提示信息输入即可。设计总结1,开始第一次真正的感觉到自己是学计算机专业的,第一次真正自己完成一个大型的程序,刚开始拿到汇编程序设计题的时候确实有点儿兴奋,心想着一定要独立快速而又高质量的完成这个程序。可是,几天后我发现我对这个学生通讯录系统一点头绪都没有,随后就是一个劲的看书上没学过的内容。可是书上的东西好像并没有帮到我什么忙,使我更感到无从下手。就这样一直拖到了不能再拖的时候了,刚开始的豪言壮语也都没有了。2,看程序几天的慌乱后,终于定下心来了----找到了一个类似通讯录系统的程序,学生成绩管理系统,这也使得我今天的程序有点成绩管理系统的感觉。刚开始看到学生成绩管理系统的时候一下子就被六百多行的代码给吓着了,当时真想放弃,最后还是硬着头皮看了下去。开始真是有点看不懂,很多都是以前没有看到过的,好在前几天看过书,对BIOS功能调用INT10H和DOS功能调用还有一点的印象,查过书后都能搞清楚。对我来说是新东西的还有宏定义和结构体定义,最后通过查找书本大概的把成绩管理系统看懂了。3,写程序看了几遍成绩管理系统的源程序后对如何写这一方面的程序有了一定的了解,于是就尝试着自己开始写起了通讯录的源程序。毕竟是第一次写这么大的程序,所以虽然看懂了类似的成绩管理系统程序可是到自己写的时候还是觉得不能上手,一直是要翻书看和借鉴成绩管理系统里的内容。最后,还是模仿着成绩管理系统完成了我的第一次课程设计(排序到写心得时仍在修改之中),虽然不知道有多少内容是自己的,可我还是花了时间和精力去认真完成的。4,发现和解决问题当然,在看程序和写程序也遇到了很多的问题:1)BIOS功能调用INT10H在BIOS功能调用INT10H中,AH=02H(置光标位置)和AH=06H(当前显示页上滚)也许是我的程序中用得最多的两个功能号了。在进入了通讯录界面后怎样使光标到达指定的位置来完成操作呢?功能号AH=02H很好的解决了这个问题。DH=光标所在行,DL=光标所在列,BH=光标所在页,三个入口参数控制了光标的位置。功能号AH=06H有什么作用呢?AL=滚动的行数,CH=左上角行数,CL=左上角列数,DH=右下角行数,DL=右下角列数,BH=上滚时添补的空行的属性,07H为正常,70H为反显,这五个入口参数控制形成了一个矩形的信息窗口。2)DOS功能调用文件知识是以前没有接触过的,通讯录系统中的信息是存放在文件中的,怎样调用文件中的内容和向文件中添加内容呢?又怎样关闭文件呢?通讯录文件是事先存在的,所以只要用到3DH打开已存在的通讯录文件,其中AH=3DH,AL=存取方式代码,DS:DX指向文件路径名的ASCLL码串。3EH则用以关闭用打开的文件,对文件添加学生信息则使用3FH,CX=所要读入字节数,DX为存放读入信息的内存地址。同样的40H对文件或设备进行写操作。3)宏定义和过程调用在通讯录系统源程序中我都使用了宏定义和过程使整个程序分成了若干个模块。为什么要使用宏定义和过程调用呢?使用宏定义和过程调用会使繁杂的程序容易读懂和理解,也使写程序的思路清晰。参考文献[1]《IBM-PC汇编语言程序设计》沈美明等清华大学出版社[2]《8086/8088宏汇编语言程序设计教程》第二版王正智/编电子工业出版社[3]《80X86汇编语言程序设计教程》杨季文/等编清华大学出版社[4]《宏汇编语言MASM6实用大全》,东阳生等编著,科学出版社,1993[5]《80386/80486编程指南》田学峰,周豫滨译电子工业出版社,1994[6]《新编深入dos编程》,求伯君主编,学院出版社,1994[7]《汇编语言程序设计学习指导》宋彩莉著,西安交通大学出版社[8]《Intel汇编语言程序设计》(第五版)温玉杰梅广宇等译电子工业出版社附录源程序代码:DATASEGMENTBOOK0DB'*****************************************************$'BOOK1DB'*STUDENTADDRESSBOOKSYSTEM*',0AH,0DH,'$'BOOK11DB'*****************************************************$'BOOK2DB'*PLEASECHOICETHEOPERITION',0AH,0DH,'$'BOOK3DB'*INSERT(I)*PLEASEINPUT:',0AH,0DH,'$'BOOK4DB'*UERY(Q)*NUM:',0AH,0DH,'$'BOOK5DB'*ELETE(D)*NAME:',0AH,0DH,'$'BOOK6DB'*LIST(L)*ADDRESS:',0AH,0DH,'$'BOOK7DB'*EXIT(E)',0AH,0DH,'*$'BOOK8DB'*****************************************************$'BOOK9DB'NUMNAMEADDRESS',0AH,0DH,'$'BOOK10DB'************$'WRONGDB'YOUPUTTHEWRONGNUMORTHEREISNOTTHISSTUDENT$'FNAMEDB"E:\ADDRESS\ADDRESS.TXT"BUF1DB67DUP(?)BUFDB0AH,0DH,'$'BUF2DB65DUP(?)ZERODW?DELETDB65DUP('0')DATAENDS;数据定义结束------------------------------------STUDENTSTRUC;结构体定义NUMDB0,0NAMEDB15DUP(?)ADDRESSDB50DUP(?)STUDENTENDS;------------------------------------SHOWMACROADDRESS;显示通讯录界面LEADX,ADDRESSMOVAH,9INT21HENDM;------------------------------------LIGHT_M1MACROA;光标位置MOVAH,2MOVDH,AMOVDL,35MOVBH,0INT10HENDMLIGHT_M2MACROMOVAH,2MOVDH,11MOVDL,0MOVBH,0INT10HENDMLIGHT_M3MACROMOVAH,2MOVDH,3MOVDL,35MOVBH,0INT10HENDM;------------------------------------CLEARMACROMOVAL,0;AL滚动的行数MOVCL,0;左上角列数MOVCH,0;左上角行数MOVDH,25;右下角行数MOVDL,100;右下角列数MOVBH,7;上滚时添补空行的属性,7为正常,70为反显MOVAH,6INT10HENDMCLEAR1MACROMOVAL,0MOVBH,7MOVCH,6MOVCL,36MOVDH,9MOVDL,100MOVAH,6INT10HENDMCLEAR2MACROMOVAL,0MOVBH,7MOVCH,12MOVCL,0MOVDH,24MOVDL,100INT10HENDM;------------------------------------AGAIN_1MACRO;空格MOVDL,''MOVAH,2INT21HMOVDL,''MOVAH,2INT21HMOVDL,''MOVAH,2INT21HENDM;------------------------------------NEWLINEMACROPUSHAX;换行PUSHDXMOVDL,0DHMOVAH,2INT21HMOVDL,0AHMOVAH,2INT21HPOPDXPOPAXENDM;------------------------------------SHOW_ITEMMACROADDRESSLOCALNEXT1,NEXT2;游览列表内容形式PUSHBXMOVBX,0MOVDL,ADDRESS[BX]MOVAH,2INT21HINCBXMOVDL,ADDRESS[BX]MOVAH,2INT21HINCBXAGAIN_1NEXT1:MOVDL,ADDRESS[BX]MOVAH,2INT21HINCBXCMPBX,17JLNEXT1AGAIN_1NEXT2:MOVDL,ADDRESS[BX]MOVAH,2INT21HINCBXCMPBX,67JLNEXT2NEWLINEPOPBXENDM;------------------------------------GETINMACROADDRESS,COUNT;输入信息LOCALLP1,LP2,INPUT_END,EXITPUSHBXPUSHAXMOVBX,0LP1:MOVADDRESS[BX],''INCBXCMPBX,COUNTJLLP1MOVBX,0LP2:MOVAH,1INT21HCMPAL,0AHJZINPUT_ENDCMPAL,0DHJZINPUT_ENDMOVADDRESS[BX],ALINCBXCMPBX,COUNTJLLP2INPUT_END:CMPAL,0DHJZEXITCMPAL,0AHJZEXITMOVAH,7INT21HJMPINPUT_ENDEXIT:POPAXPOPBXENDM;------------------------------------CODESEGMENT;CODEMAINPROCFARASSUMECS:CODE,DS:DATA,ES:DATA;------------------------------------START:MOVAX,DATAMOVDS,AXMOVAH,0MOVAL,3INT10H;BIOS显示调用CLEARSHOWBOOK0NEWLINESHOWBOOK1SHOWBOOK11NEWLINE;通讯录界面SHOWBOOK2SHOWBOOK3SHOWBOOK4SHOWBOOK5SHOWBOOK6SHOWBOOK7NEWLINESHOWBOOK8LIGHT_M3;------------------------------------W:MOVAH,7;选择操作INT21HCMPAL,'I'JNZN1CALLINSERTJMPWN1:CMPAL,'D'JNZN2CALLDELETEJMPWN2:CMPAL,'Q'JNZN3CALLQUERYJMPWN3:CMPAL,'L'JNZN4CALLLISTJMPWN4:CMPAL,'E'JZEXITFJMPWEXITF:MOVAH,4CHINT21HRETMAINENDP;------------------------------------INSERTPROCNEAR;插入PUSHAXPUSHBXPUSHCXPUSHDXMOVDX,OFFSETFNAMEMOVAL,2MOVAH,3DHINT21HMOVBX,AXCLEAR1LIGHT_M15CALLGET_RECMOVCX,0MOVDX,0MOVAL,2MOVAH,42HINT21HFLOC:CMPAX,0JZTRANSUBAX,67MOVCX,DXMOVDX,AXMOVAL,0MOVAH,42HINT21HPUSHAXPUSHDXMOVDX,OFFSETBUF2MOVCX,67MOVAH,3FHINT21HMOVCX,2MOVSI,0JMPCONTTRAN:MOVCX,DXMOVDX,AXMOVAL,0MOVAH,42HINT21HJMPLP67CONT:MOVAL,BUF2[SI]CMPBUF1[SI],ALJALP67CMPBUF1[SI],ALJBNEXTINCSILOOPCONTJMPERRORNEXT:MOVDX,OFFSETBUF2MOVCX,67MOVAH,40HINT21HPOPDXPOPAXJMPFLOCERROR:MOVDX,OFFSETWRONGMOVAH,9HINT21HJMPOVERLP67:MOVDX,OFFSETBUF1MOVCX,67MOVAH,40HINT21HOVER:MOVAH,3EHINT21HPOPDXPOPCXPOPBXPOPAXRETINSERTENDP;------------------------------------GET_RECPROCNEARPUSHAXPUSHBXMOVBX,0GETINBUF2,2MOVAL,BUF2MOVBUF1[BX],ALINCBXMOVAL,BUF2+1MOVBUF1[BX],ALINCBXLIGHT_M16GETINBUF2,15MOVCX,15MOVSI,0LP11:MOVAL,BUF2[SI]MOVBUF1[BX],ALINCBXINCSILOOPLP11LIGHT_M17GETINBUF2,50MOVCX,50MOVSI,0LP12:MOVAL,BUF2[SI]MOVBUF1[BX],ALINCBXINCSILOOPLP12POPBXPOPAXRETGET_RECENDP;------------------------------------QUERYPROCNEAR;查询PUSHAXPUSHBXPUSHCXPUSHDXCLEAR1CLEAR2MOVDX,OFFSETFNAMEMOVAL,2MOVAH,3DHINT21HMOVBX,AXLIGHT_M2GETINBUF1,2NEWLINELEADX,BOOK10MOVAH,9INT21HNEWLINELEADX,BOOK9MOVAH,9INT21HLP3:MOVAH,3FHMOVCX,67MOVDX,OFFSETBUF2INT21HLEASI,BUF2LEADI,BUF1MOVCX,2LP4:MOVAL,BYTEPTR[SI]CMPAL,BYTEPTR[D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 邵阳市重点中学2024-2025学年初三5月毕业班模拟考试数学试题含解析
- 江苏省盐城市响水实验、一中学2025届初三下学期零诊模拟生物试题含解析
- 廊坊卫生职业学院《成衣制作工艺》2023-2024学年第二学期期末试卷
- 江西师范大学科学技术学院《prote软件设计》2023-2024学年第二学期期末试卷
- 延寿县2025届数学四年级第二学期期末质量检测模拟试题含解析
- 天府新区航空旅游职业学院《欧美设计规范释义一双语》2023-2024学年第二学期期末试卷
- 天津石油职业技术学院《珠宝专业英语》2023-2024学年第二学期期末试卷
- 塔里木职业技术学院《测井资料解释课程设计》2023-2024学年第一学期期末试卷
- 辽宁税务高等专科学校《影像诊断学》2023-2024学年第二学期期末试卷
- 文山壮族苗族自治州马关县2024-2025学年数学三下期末综合测试模拟试题含解析
- 美国学生阅读技能训练
- 网络安全服务项目服务质量保障措施(实施方案)
- 生产加工型小微企业安全管理考试(含答案)
- 青少年科技创新比赛深度分析
- 世界近代武器革新图鉴(1722-1900)英国篇
- 安标受控件采购管理制度
- 亚低温的治疗与护理
- 危险化学品企业设备完整性 第2部分 技术实施指南 编制说明
- 防高坠自查自纠台账
- GB/T 4437.1-2023铝及铝合金热挤压管第1部分:无缝圆管
- 市政工程消耗量定额 zya1-31-2015
评论
0/150
提交评论