基于汇编语言的个人通讯录管理程序的设计与实现.doc_第1页
基于汇编语言的个人通讯录管理程序的设计与实现.doc_第2页
基于汇编语言的个人通讯录管理程序的设计与实现.doc_第3页
基于汇编语言的个人通讯录管理程序的设计与实现.doc_第4页
基于汇编语言的个人通讯录管理程序的设计与实现.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

学 号: *浙江理工大学课 程 设 计题 目个人通讯录管理程序设计学 院计算机科学与技术学院专 业软件工程专业班 级软件0803 班姓 名林瑞指导教师*2011年1月6日报告书目录1. 课程设计任务书.22. 设计目的、设计内容、完成时间.33. 设计工具与环境.34. 程序设计算法说明、框图.35. 运行结果记录.206. 设计结果测试、分析.237. 参考文献.248.评分表.25课程设计任务书学生姓名: 林瑞 专业班级: 软件工程0702 指导教师: * 工作单位: 计算机学院 题 目: 个人通讯录管理程序设计 初始条件: DOS操作系统。编辑,汇编,连接,调试工具:edit、masm、link、 debug要求完成的主要任务: 该程序要求针对个人的功能进行设计:个人通讯录及其修改、增加、删除资料等等。用按键控制操作。课程设计报告书写要求:1. 封面(使用教务处统一格式)2. 报告书目录3. 课程设计任务书4. 设计目的、设计内容、完成时间5. 设计环境与工具6. 程序设计算法说明、框图 7. 运行结果记录8. 设计结果测试、分析9. 参考文献10. 其他11. 评分表12. 封底时间安排:课程设计时间为18周一周。指导教师签名: 2011年 1 月 6日系主任(或责任教师)签名: 2011 年 1月 6日个人通讯录管理程序设计1. 设计目的、设计内容、完成时间1.1设计目的:通过该课程设计,更加深入的理解汇编语言的各种高级操作,熟悉计算机体系结构,DOS操作系统的功能调用。进一步了解汇编语言控制计算机硬件的方法, 提高应用汇编语言编程的能力。汇编语言是一种机器语言,是计算机能提供的最快最有效的语言,也是能够利用计算机所有硬件性能并能直接控制硬件的语言,正是由于汇编语言这种直接操作硬件和它的高效性,使汇编语言经久不衰,至今仍应用与各种领域,广泛的被用来开发驱动程序和单片机程序,汇编语言至今仍非常流行。对于我们计算机学院的学生来说,将来在工作中或多或少肯定都会接触到汇编语言,通过本次课程设计不但能巩固和加强我们刚学的汇编语言基础,而且还会增强我们的团体合作精神,增加我们学习的积极性,增加我们对汇编语言学习的兴趣。1.2设计内容:该程序要求针对个人的功能进行设计:个人通讯录及其修改、增加、删除资料等等。用按键控制操作。1.3完成时间: 2011年1月5日2. 设计工具与环境DOS操作系统、文本编辑器,MASM.EXE,LINK,EXE、DEBUG.EXE。3.程序设计算法说明、框图3.1问题分析这个问题的实现要用到磁盘文件存取技术,在个人通讯录中,采用一个list.txt存放用户输入的通讯录信息,查询时在从中取出,这样就相当于构成了一个小型的数据库,这样就可以完成通讯信息和日程表信息的存储和读取。3.2功能结构框图 输出字符窜的宏(操作界面) 主 程 序 插入的子函数,Insert调用文件操作,将输入信息写入List.txt中 选择Insert菜单 打开List.txt,将文件中信息读入Buffer,并关闭List.txt显示的子函数, List 修改的子函数,Modify 选择List菜单 打开List.txt 修改List.txt中信息退出子函数,Excite 选择Modify菜单 选择Excite菜单 3.3流程图开 始 选择 菜单输入F1,激活菜单 N执行Insert选择Insert? Y选择List? N 执行Insert Y N执行Insert选择Modify? Y N选择Schedue?执行Insert Y N选择Excite? Y结 束3.4源程序清单include macro.macshow_message macro addrs local x1,x2 push bx push cx;* pos_curse 00h,row,18d mov bx,0x1: mov dl,addrsbx mov ah,2 int 21h inc bx cmp bx,15 ;bx=15进行下面的程序 jl x1;* mov cx,15 ;* mov dl, mov ah,2 int 21h mov dl, mov ah,2 int 21h mov dl, mov ah,2 int 21h;*x2: mov dl,addrsbx mov ah,2 int 21h inc bx loop x2 inc row printf row,16d,prompt3 pop cx pop bxendmgetin macro addrs,count2 ;把键盘输入的count2个字符存入addrs中,回车结束local spot_boll,lp,input_end,exit push bx push ax;* mov bx,0spot_boll: mov addrsbx, inc bx cmp bx,15 jl spot_boll;* mov bx,0 mov cx,15lp: mov ah,1 ;键盘输入并回显 int 21h cmp al,0ah ;判断是否为换行 jz input_end cmp al,0dh ;判断是否为回车 jz input_end mov addrsbx,al ;把键盘输入的字符存count2个到addrs中 inc bx loop lpinput_end: cmp al,0dh ;判断是否为回车 jz exit cmp al,0ah ;判断是否为换行驶 jz exit mov ah,7 ;键盘输入不回显 int 21h jmp input_endexit: pop ax pop bx endm;-定义数据段data segmentTitle0 db * Address List*$mass_1 db Designed By LiuYang(ruanjian 0803)(0120810870228)$mess1 db Welcome to Personal Document Management Systems$mess2 db press F1 key choose the menu:$mess3 db Personal Information: $mess4 db Name:liuyang Tel$mess5 db email:840455177 QQ:840455177 $prompt1 db Name:$prompt2 db Number:$prompt3 db -$prompt4 db The Result of query below:$prompt5 db Insert Success$prompt6 db Query Fail! The name is no in the list$prompt7 db Modify Success$prompt8 db Modify Fail! Please Check the name$prompt9 db Your recent Schedue are as follows: $prompt10 db |2010-1-1 Say happy new year to friends |$prompt11db|2010-1-2Complete Compilation Curriculum Design |$prompt12db|2010-1-3Complete report of UML |$prompt13 db |2010-1-4 Complete report of Ji Suan JiZuChengYuanLi |$prompt14db |2010-1-5 Complete Curriculum Design of JiSuanJiZuChengYuanLi |$prompt15 db |2010-1-10 Back to Home! |$prompt16 db |-|$prompt17 db Name/Number:$prompt18 db*$menu1 db Insert$ ;菜单menu2 db Schedue$menu3 db List$menu4 db Modify$menu5 db Exit$mess11 db name Telephone Number,0ah,0dh,$fname db list.txtbuffer1 db 30 dup(?)buffer2 db 30 dup(?)handle dw ?row db ?x db ?data ends;-堆栈段的定义stack segment para stack stack db 64 dup(0)stack ends;-代码段code segmentmain proc far assume cs:code,ds:data,es:datastart: mov ax,data mov ds,ax win 0,7Dh,0,0,24d,79d ;定义窗口背景 win 0,1eh,1,1,23d,78d printf 0,5,menu1 ;显示菜单 printf 0,15,menu2 printf 0,25,menu3 printf 0,35,menu4 printf 0,45,menu5 printf 24,6d,mass_1 win 0,7Dh,2,3,21,76 ;显示屏幕中间的信息 printf 05d,15d,mess1 printf 06d,5d,prompt18 printf 07d,25d,mess2 printf 10d,5d,prompt18 printf 13d,15d,mess3 printf 15d,15d,mess4 printf 17d,15d,mess5 pos_curse 0,50,100 ;隐藏光标 ;-选择菜单select: getch ;键盘输入一个字符并不回显 cmp al,3bh ;判断是否为F1键 jnz select call menu_showmain endp;*menu_show proc near ;菜单操作Insert_menu: win 0,7Dh,0,43,0,51 printf 0,45,menu5 win 0,7Dh,0,13,0,21 printf 0,15,menu2 win 0,2eh,0,4,0,12 printf 0,5,menu1 getch cmp al,0dh jnz a1 call inserta1: cmp al,4dh jnz Insert_menuQuery_menu: win 0,7Dh,0,4,0,12 printf 0,5,menu1 win 0,7Dh,0,23,0,31 printf 0,25,menu3 win 0,2eh,0,13,0,21 printf 0,15,menu2 getch cmp al,0dh jnz a2 call querya2: cmp al,4dh jnz b1 jmp List_menub1: cmp al,4bh jnz Query_menu jmp Insert_menuList_menu: win 0,7Dh,0,13,0,21 printf 0,14,menu2 win 0,7Dh,0,33,0,41 printf 0,35,menu4 win 0,2eh,0,23,0,31 printf 0,25,menu3 getch cmp al,0dh jnz a3 call lista3: cmp al,4dh jnz b2 jmp Modify_menub2: cmp al,4bh jnz List_menu jmp Query_menuModify_menu: win 0,7Dh,0,23,0,31 printf 0,25,menu3 win 0,7Dh,0,43,0,51 printf 0,45,menu5 win 0,2eh,0,33,0,41 printf 0,35,menu4 getch cmp al,0dh jnz a4 call modifya4: cmp al,4dh jnz b3 jmp Exit_menub3: cmp al,4bh jnz Modify_menu jmp List_menuExit_menu: win 0,7Dh,0,33,0,41 printf 0,35,menu4 win 0,2eh,0,43,0,51 printf 0,45,menu5 getch cmp al,0dh jnz a5 call quita5: cmp al,4dh jnz b4 jmp Insert_menu b4: cmp al,4bh jnz Exit_menu jmp Modify_menu menu_show endp ;*插入记录insert proc near push ax push bx push cx push dx open_file fname ;打开文件 mov bx,ax clear_screen 1,1,23d,78d ;清屏 win 0,1eh,1,1,23d,78d printf 5d,15d,prompt1 printf 7d,15d,prompt2 call put_buffer ;从键盘接收数据(buffer1) move_file_pointer 0,0,2 ;以读写的方式移动文件指针到文件尾 write_file 30,buffer1 ;写文件 close_file ;关闭文件 clear_screen 1,1,23d,78d ;清屏 win 0,1eh,1,1,23d,78d win 0,7Dh,6d,6d,8d,60d printf 7d,15d,prompt5 pop dx pop cx pop bx pop ax retinsert endp;*把键盘输入的姓名,电话号码存入到buffer1中put_buffer proc near push ax push bx pos_curse 00h,5d,22d getin buffer1,15 ;把键盘输入的15个字符存入到buffer1中 (姓名) ;-电话号码 pos_curse 00h,7d,25d ;把光标设置在第5行 getin buffer2,15 ;把键盘输入的15个字符存入buffer中 mov bx,15 mov cx,15continue0: mov al,buffer2bx-15 mov buffer1bx,al inc bxloop continue0;- pop bx pop ax retput_buffer endp;*显示日程表query proc near clear_screen 1,1,23d,78d ;清屏 win 0,1eh,1,1,23d,78d printf 5d,15d,prompt9 printf 6d,15d,prompt16 printf 7d,15d,prompt10 printf 8d,15d,prompt16 printf 9d,15d,prompt11 printf 10d,15d,prompt16 printf 11d,15d,prompt12 printf 12d,15d,prompt16 printf 13d,15d,prompt13 printf 14d,15d,prompt16 printf 15d,15d,prompt14 printf 16d,15d,prompt16 printf 17d,15d,prompt15 printf 18d,15d,prompt16 retquery endp;*修改记录modify proc near ;修改文件 push ax push bx push cx push dx clear_screen 1,1,23d,78d ;清屏 win 0,1eh,1,1,23d,78d printf 5d,15d,prompt1 printf 7d,15d,prompt2 open_file fname ;以读写的方式打开文件 mov bx,ax call put_buffer ;修改的数据读入到buffer1中read: read_file 30,buffer2 ;读文件 cmp ax,0 jz fail2;-比较前15个字符是否相同 lea si,buffer2 lea di,buffer1 mov cx,15c5: mov al,byte ptrsi cmp al,byte ptrdi jnz read inc si inc di loop c5 jmp success2fail2: clear_screen 1,1,23d,78d ;清屏 win 0,1eh,1,1,23d,78d win 0,7Dh,6d,6d,8d,60d printf 7d,15d,prompt8 jmp f2success2: ;-移动文件指针 move_file_pointer 0ffffh,-30,1 write_file 30,buffer1 ;把buffer1中的内容写入到文件中 clear_screen 1,1,23d,78d ;清屏 win 0,1eh,1,1,23d,78d win 0,7Dh,6d,6d,8d,60d printf 7d,15d,prompt7f2: close_file ;关闭文件 pop dx pop cx pop bx pop ax retmodify endp;*显示记录列表list proc near push ax push bx push cx push dx clear_screen 1,1,23d,78d ;清屏 win 0,1eh,1,1,23d,78d printf 1d,20d,mess11 open_file fname ;以读写的方式打开文件 mov bx,ax mov row,3again: read_file 30,buffer1 ;读文件 cmp ax,0 jz p show_message buffer1 ;把buffer中的内容按照一定的格式显示出来 inc row jmp againp: close_file ;关闭文件 pop dx pop cx pop bx pop ax retlist endp;*退出quit proc near exitquit endpcode ends end start4.运行结果记录4.1插入联系人回车4.2显示已存在的联系人选择List回车4.3修改联系人选择修改菜单,回车,输入姓名和号码4.4显示日程表选择显示日程表菜单 Schedue4.5退出5.设计结果测试、分析5.1结果测试依次输入以下联系人NameTelTest1Test2Test3Test4然后List,测试结果如下5.2设计中遇到的问题 在此次课程设计中,真是遇到很多问题,真是只有在用的时候才知道自己学的有多少,掌握的情况有多差,在整个课程设计中,最主要

温馨提示

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

评论

0/150

提交评论