汇编语言课程设计报告电话簿管理.doc

上传人:文库蛋蛋多 文档编号:2884826 上传时间:2023-03-01 格式:DOC 页数:21 大小:134.50KB
返回 下载 相关 举报
汇编语言课程设计报告电话簿管理.doc_第1页
第1页 / 共21页
汇编语言课程设计报告电话簿管理.doc_第2页
第2页 / 共21页
汇编语言课程设计报告电话簿管理.doc_第3页
第3页 / 共21页
汇编语言课程设计报告电话簿管理.doc_第4页
第4页 / 共21页
汇编语言课程设计报告电话簿管理.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《汇编语言课程设计报告电话簿管理.doc》由会员分享,可在线阅读,更多相关《汇编语言课程设计报告电话簿管理.doc(21页珍藏版)》请在三一办公上搜索。

1、电话薄管理1 课程设计的目的汇编语言是一项实用性很强的技术,只有进行实际操作,将理论应用于实际中,才能确实掌握书中的知识点。 本课程设计通过设计简单的电话薄管理,设计的程序包含俩大块,一个是从已经定义好的指定的数据存储单元中查找信息,还有一个就是要把从键盘上输入的数据填充到数据储存单元当中去。通过简单的程序,加深学生对汇编程序基本概念的了解,巩固学习成果;还能够提高实际动手能力及对计算机硬件的了解,掌握计算机软件与硬件之间的联系。为学生后续课程的学习,打下良好的基础。2 设计方案论证2.1开发环境硬件:2G内存,250G硬盘,ATI HD4500显卡,Inter Core i3CPU。 软件:

2、MASM。自二十世纪80年代初 Microsoft 公司推出 MASM 1.0 以来,目前MASM的版本已升至6.15,支持MMX Pentium、Pentium II、Pentium III及Pentium 4指令系统。 MASM 4.0支持80286/80287的处理器和协处理器;MASM 5.0支持80386/80387处理器和协处理器,并加进了简化段伪定义指令和存储模式伪指令,汇编和连接的速度更快。 MASM 6.0是1991年推出的,支持80486处理器,它对MASM 进行重新组织,并提供了许多类似高级语言的新特点。MASM 6.0之后又有一些改进,微软又推出MASM 6.11,利用

3、它的免费补丁程序可以升级到MASM 6.14,支持到Pentium III指令系统。2.2总体设计功能定义一个数据存储单元,并且在此数据段后面建立足够空间的缓冲区,以便再存入数据。可以通过一个主函数来引导程序的运行,主函数中可以根据用户的需求而调用不同的功能,即里面包括 主菜单(这是必需的),依据从键盘输入不同的指令而选取不同的子功能,如 查找 (search proc)和插入(insert proc).查找功能的实现:我们为了方便查找,我们将人名和电话号码各以10个字节(不够补空格)为单位存入数据单元中,并且是号码紧挨着人名排,以便查找,在数据单元的尾段开辟足够空间的缓冲区,以便再存入数据进

4、去,就如我所设计代码中的 buf,buf db ji ,54698765 , ;定义buf存储单元以存储人名和电话号码 liu ,69856456 , guo ,56566898 , ;其中人名和电话号码都以10个字节为单位存储 zhang ,569874123 , 20 dup(10 dup (0),10 dup (0);开辟的缓冲区查找可用移动指针来比较实现。可设计2个指针,SI和DI再存入功能:其思路和查找的有点雷同,也是通过移动指针来实现的,只不过查找时的指针先移在数据单元的表头,而插入时的指针要移在数据单元中的最后已经存入人的电话号码后。23详细设计功能2.3.1主程序功能主菜单:依

5、据从键盘输入不同的指令而选取不同的子功能,如 查找 (search proc)和插入(insert proc).Main开始datas -ax al=q ? al=r ?al=e ?ax-dsax-es显示主菜单界面键盘输入字符call querycall insert结束主菜单流程图2.3.2 查找子程序功能queryax-datasax-ds,ax-es 0-DFcall ipnamecall search返回功能:是用于查找从键盘输入人名的所有信息的主程序,内含对输入人名子程序和查找信息的子程序调用查找的子程序 search proc, search 功能为:查询信息程序,查询条件为键盘

6、 输入人名buf-dipush di count-bl,0-bh_name+2-si10 -cxrepe cmpsbcx=0,ZF=1 ?cx,zf=1 ?pop didi-si,temp-di,20-cxpop di,20+di-di,push direp movsbbx-1=0 ?temp-dx9号功能调用,输出信息 输出提示信息返回返回到菜单再存入子程序 :insert 功能: 实现增强功能的程序,将所输的输出提示信息,call ipname 输出提示信息,call ipnumber 信息存储在buf 中开辟的缓区, 成功插入后,count数加一 返回0-DF输出提示信息20-alcou

7、nt-clcount+1-count(al)*(cl)-axdi (IP自动加10),将si中的数据再传入di中buf-dinum+2-si10-cx(di)+(ai)-di_name+2-si10-cx将si中的数据传入di中输入人名的子程序 输入电话号码子程序:ipname proc ipnumber procipnumberipnamenum-dx,10号功能调用_name-dx,10号功能调用0-bh,_num+1-bl0-bh,_name+1-bl10-cx, (cx)-(bx)-cx10-cx, (cx)-(bx)-cx20h-numbx+220h-_namebx+2bx+1-bx

8、bx+1-bxcx-1=0 ?cx-1=0 ?返回返回注释:此两子所用的算法一致,唯一的区别在存放的缓冲区不同;功能分别为 接受从键盘输入的人名信息和 号码信息第3章 源程序代码DATAS SEGMENTcount db 4buf db ji ,54698765 , ;存储人名和电话号码的数据单元区liu ,69856456 , guo ,56566898 , zhang ,569874123 , 20 dup(10 dup (0),10 dup (0) ;为再存入数据开辟空间_name db 10, ;缓冲区键盘输入name字符串 ?, 10 dup(?)num db 10, ;缓冲区键盘输

9、入num字符串 ?, 10 dup(?) temp db 20dup(?),0dh,0ah,$ ; 缓冲区存入人名和电话簿信息menuitem db people phonenumber management system,0ah,0dh db *,0ah,0dh db * this is main menu *,0ah,0dh db * 1. query (q) *,0ah,0dh db * 2. insert (i) *,0ah,0dh db * 3. exit (e) *,0ah,0dh db *,0ah,0dh db please select(q,i or e):,0ah,0dh,$

10、 ;显示主菜单相关信息mess1 db name,10 dup( ),tel,0ah,0dh,$mess2 db please Input the name:$mess3 db please Input the telephone number:$mess4 db 0ah,0dh,$ ;专门定义一个MESS4,以便在代码中用9号功能调用实现换行mess5 db Insert succed!$err1 db there is not exsit the people!,0ah,0dh,$ ;错误提示信息DATAS ENDSSTACKS SEGMENT db 2000 dup(?)STACKS E

11、NDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSmain proc far mov ax,datas mov ds,ax mov es,ax n1: lea dx,menuitem mov ah,9 int 21h ;显示主菜单选择界面 mov ah,1 int 21h ;从键盘输入字符 cmp al,q jnz n2 call query :若所输字符是q,则调用子程序 query jmp n1n2: cmp al,i jnz n3 call insert ; 若所输字符是i,则调用子程序 insert jmp n1 n3: cmp al

12、,e jz exit jmp n1exit: mov ah,7 int 21h mov ah,4ch int 21h ret ;退出main endpquery proc near ;查找的主程序 push ds xor ax,ax push ax mov ax,datas mov ds,ax mov es,ax cld ;清除方向标志 lea dx,mess4 mov ah,9 int 21h ;换行 lea dx,mess2 mov ah,9 int 21h call ipname ;调用子程序 ipname,从键盘上输入人名 lea dx,mess4 mov ah,9 int 21h c

13、all search ;具体查找的子程序 mov ah,7 int 21h ret query endpipname proc near ;从键盘输入名字 lea dx,_name ;存放待查找的人名地址 mov ah,10 int 21h mov bh,0 mov bl,_name+1 ;bl 存放从键盘输入的字符串长度 mov cx,10 sub cx,bx ; 计算剩下的长度 r: mov _namebx+2,20h ;剩下的地方补空格 inc bx loop r retipname endpsearch proc near lea di,buf ;di 中存放表首地址 push di

14、mov bl,count mov bh,0l: lea si,_name+2 mov cx,10 repe cmpsb ;比较 si 和bi的前10个字节 jz n4 ;不相等时不跳转 pop di add di,20 ;di 偏移地址加20 push di dec bx jnz l lea dx,err1 ;提示找不到。信息 mov ah,9 int 21h jmp n1n4: pop di mov si,di lea di,temp mov cx,20 rep movsb ; 将人名和号码信息传入 temp lea dx,mess1 mov ah,9 int 21h lea dx,temp

15、 mov ah,9 int 21h ;输出temp中的 人名和号码 retsearch endpinsert proc near lea dx,mess4 mov ah,9 int 21h lea dx,mess2 mov ah,9 int 21h待添加的隐藏文字内容3 lea dx,mess4 mov ah,9 int 21h call ipname ;调用输入人名的子程序 lea dx,mess4 mov ah,9 int 21h lea dx,mess3 mov ah,9 int 21h call ipnumber ;调用输入号码的子程序 cld mov al,20 mov cl,cou

16、nt mul cl ;ax 存放 buf里已有数据的字节数 lea di,buf add di,ax ;将di移动指向数据单元中的已经存入的最后人的电话后 lea si,_name+2 mov cx,10 rep movsb ;将 si 中数据(人名) 传 di中 lea si,num+2 mov cx,10 rep movsb ;再传数据(号码)到 di中 inc count ; count 加一条记录 lea dx,mess5 mov ah,9 int 21h lea dx,mess4 mov ah,9 int 21h mov ah,7 int 21h retinsert endpipnu

17、mber proc near ;从键盘输入号码 lea dx,num ;存放待存入的电话号码 mov ah,10 int 21h lea dx,mess4 mov ah,9 int 21h mov bh,0 mov bl,num+1 ; bl 存放从键盘输入的字符串长度 mov cx,10 sub cx,bxc1: mov numbx+2,20h ;补空格 inc bx loop c1 retipnumber endp codes ends end main ;程序结束第 4章 使用说明由于本人是在 ASM 即 MASM for windows集成环境下编写的代码,所以就以在此环境下为准,介绍

18、一下此环境下使用发法:1 生成可执行文件后,运行该程序,随即我们进入主菜单显示界面,示图如下: 2 可按界面提示输入。选择q,为查找功能,可根据提示查找你所需要的人的电话号码,并显示出来;如果电话簿里没有你想查找人的电话,则提示 不存在此人,并返回主菜单显示界面重新选择功能项,示图如下:3 选择 I号功能键实现的是再存入功能,可以根据系统的提示输入好人名和号码,提示插入成功,这样从键盘上输入的人名和电话号码就已经存入好了。随后,我们回到主菜单,就可以查找到刚才输进去的人的电话号码了,示图如下: 4 按e键可退出本系统:此系统是实现电话的查找与再存入功能,题目要求的功能都能实现,可以随时查找与录

19、入,分步进行,一次只能查找或插入一次信息,在不退出系统的前提下可重复查找与插入。 第5章 小结与心得体会小结与心得:通过本次课程设计.进一步掌握了汇编的程序设计方法,对原来学过的和没学过的知识都有了较深的理解,也深刻的体会到用汇编语言编写代码确实不容易,汇编好几行语句在高级语言里面只需要一条就可以完成,但事物总有两面性,存在即具其合理性,ASM的优越的性能(时间和空间),高级语言是望尘莫及的,所以学好汇编也是为我们以后的成功奠定基础。相信通过这次汇编的课程设计,自己的分析问题和处理问题的能力都有了一次不小的提高,收获不少。同时也要感谢那些在课程设计中给予我帮助的同学,尽管时间紧迫,但他们仍然愿

20、意挤出时间来帮我解决编程过程中出现的问题,不胜感激!为了编出代码,已经有好几天没有吃好睡好,熬了好几个晚上,总算黄天不负有心人,成果带来的喜悦是无法言语的!相信能实现功能的代码就是好代码,况且本人代码还算少,怎么也算得上是个小小精华吧!相信课程设计的目的已经达到。参考文献:1 王元珍,韩宗芬.IBM-PC宏汇编语言程序设计(第二版).华中理工大学出版社. 2 李珍香,刘红梅,赵润林. 汇编语言课程设计案例精编. 中国水利水电出版社. 3 刘均,周苏,金海溶等. 汇编语言程序设计实验教程. 科学出版社 4 丁峻岭. 汇编语言实用编程技巧. 首都师范大学出版社. 5 沈美明,温冬婵.IBM-PC汇

21、编语言程序设计(第2版).清华大学出版社. 6 齐志儒,高福祥. 汇编语言程序设计. 东北大学出版社.附 录程序清单:此源代码共用了一个 main 程序,5个子程序:(1).query :用于查找的主程序,里面包含2个子程序的调用. (2).insert:实现增强功能的主程序,将所输的信息成功插入后,自动将条目总数加1.(3) .search : 查询信息,查询条件为姓名. 对结构数组无影响.(4) .ipname: 从键盘输入人名信息.(5).ipnumber:从键盘输入号码信息.具体的代码已经在第三章给出。备注:所编写的分程序大多都在程序内定的参数,所以也就没有出入口参数,本人秉着能实现功能的程序就是好程序的思想所编写此代码,虽说很辛苦,但也值得!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号