汇编语言课程设计报告电话簿管理_第1页
汇编语言课程设计报告电话簿管理_第2页
汇编语言课程设计报告电话簿管理_第3页
汇编语言课程设计报告电话簿管理_第4页
汇编语言课程设计报告电话簿管理_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

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 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,count mul cl ;

16、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 endpipnumber proc n

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

温馨提示

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

评论

0/150

提交评论