




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录第1章 需求分析及设计思路 .1第2章 系统流程图 .3第3章 源程序代码 .8第4章 使用说明 .14第5章 小结与心得体会 .17参考文献 .18附录 .19 1第1章 需求分析及设计思路从题目要求来看,要设计的程序需包含俩大块,一个是从已经定义好的指定的数据存储单元中查找信息,还有一个就是要把从键盘上输入的数据填充到数据储存单元当中去。设计:可以定义一个数据存储单元,并且在此数据段后面建立足够空间的缓冲区,以便再存入数据。可以通过一个主函数来引导程序的运行,主函数中可以根据用户的需求而调用不同的功能,即里面包括 主菜单(这是必需的),依据从键盘输入不同的指令而选取不同的子功能,如 查
2、找 (search proc)和插入(insert proc).查找功能的实现:我们为了方便查找,我们将人名和电话号码各以10个字节(不够补空格)为单位存入数据单元中,并且是号码紧挨着人名排,以便查找,在数据单元的尾段开辟足够空间的缓冲区,以便再存入数据进去,就如我所设计代码中的 buf,buf db 'ji ','54698765 ', ;定义buf存储单元以存储人名和电话号码 'liu ','69856456 ', 'guo ','56566898 ', ;其中人名和电话号码都以10个字节为单位
3、存储 'zhang ','569874123 ', 20 dup(10 dup (0),10 dup (0);开辟的缓冲区查找可用移动指针来比较实现。可设计2个指针,si和di其他具体如何查找可参见报告第三章,源程序代码,这就不多介绍。再存入功能:其思路和查找的有点雷同,也是通过移动指针来实现的,只不过查找时的指针先移在数据单元的表头,而插入时的指针要移在数据单元中的最后已经存入人的电话号码后。具体如何实现插入在 第三章已经有所说明。主要思路大致是这样,详细代码在第三章已经有给出。第2章 系统流程图 main开始datas ->ax al=q ? al=r
4、 ?al=e ?ax->dsax->es显示主菜单界面键盘输入字符call querycall insert结束查找的主程序:queryax->datasax->ds,ax->es 0->dfcall ipnamecall search返回功能:是用于查找从键盘输入人名的所有信息的主程序,内含对输入人名子程序和查找信息的子程序调用查找的子程序 search proc, search 功能为:查询信息程序,查询条件为键盘 输入人名buf->dipush di count->bl,0->bh_name+2->si10 ->cxrep
5、e 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->alcount->clcount+1->co
6、unt(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-&g
7、t;cx, (cx)-(bx)->cx20h->numbx+220h->_namebx+2bx+1->bxbx+1->bxcx-1=0 ?cx-1=0 ?返回返回注释:此两子所用的算法一致,唯一的区别在存放的缓冲区不同;功能分别为 接受从键盘输入的人名信息和 号码信息第3章 源程序代码datas segmentcount db 4buf db 'ji ','54698765 ', ;存储人名和电话号码的数据单元区'liu ','69856456 ', 'guo ','56566
8、898 ', 'zhang ','569874123 ', 20 dup(10 dup (0),10 dup (0) ;为再存入数据开辟空间_name db 10, ;缓冲区键盘输入name字符串 ?, 10 dup(?)num db 10, ;缓冲区键盘输入num字符串 ?, 10 dup(?) temp db 20dup(?),0dh,0ah,'$' ; 缓冲区存入人名和电话簿信息menuitem db ' people phonenumber management system',0ah,0dh db ' *
9、',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,'$' ;显示主菜单相关信息mess1 db 'name',10 dup(
10、39; '),'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,'$'
11、; ;错误提示信息datas endsstacks segment db 2000 dup(?)stacks endscodes 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
12、 al,'i' jnz n3 call insert ; 若所输字符是i,则调用子程序 insert jmp n1 n3: cmp al,'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,mes
13、s2 mov ah,9 int 21h call ipname ;调用子程序 ipname,从键盘上输入人名 lea dx,mess4 mov ah,9 int 21h call 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
14、;剩下的地方补空格 inc bx loop r retipname endpsearch proc near lea di,buf ;di 中存放表首地址 push di 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 d
15、i,temp mov cx,20 rep movsb ; 将人名和号码信息传入 temp lea dx,mess1 mov ah,9 int 21h lea dx,temp 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 d
16、x,mess3 mov ah,9 int 21h call ipnumber ;调用输入号码的子程序 cld mov al,20 mov cl,count 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,
17、9 int 21h lea dx,mess4 mov ah,9 int 21h mov ah,7 int 21h retinsert endpipnumber 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 en
18、d main ;程序结束第 4章 使用说明由于本人是在 asm 即 masm for windows集成环境下编写的代码,所以就以在此环境下为准,介绍一下此环境下使用发法:1 生成可执行文件后,运行该程序,随即我们进入主菜单显示界面,示图如下: 2 可按界面提示输入。选择q,为查找功能,可根据提示查找你所需要的人的电话号码,并显示出来;如果电话簿里没有你想查找人的电话,则提示 不存在此人,并返回主菜单显示界面重新选择功能项,示图如下:3 选择 i号功能键实现的是再存入功能,可以根据系统的提示输入好人名和号码,提示插入成功,这样从键盘上输入的人名和电话号码就已经存入好了。随后,我们回到主菜单,就
19、可以查找到刚才输进去的人的电话号码了,示图如下: 4 按e键可退出本系统:此系统是实现电话的查找与再存入功能,题目要求的功能都能实现,可以随时查找与录入,分步进行,一次只能查找或插入一次信息,在不退出系统的前提下可重复查找与插入。 第5章 小结与心得体会小结与心得:通过本次课程设计.进一步掌握了汇编的程序设计方法,对原来学过的和没学过的知识都有了较深的理解,也深刻的体会到用汇编语言编写代码确实不容易,汇编好几行语句在高级语言里面只需要一条就可以完成,但事物总有两面性,存在即具其合理性,asm的优越的性能(时间和空间),高级语言是望尘莫及的,所以学好汇编也是为我们以后的成功奠定基础。相信通过这次汇编的课程设计,自己的分析问题和处理问题的能力都有了一次不小的提高,收获不少。同时也要感谢那些在课程设计中给予我帮助的同学,尽管时间紧迫,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁省抚顺市抚顺县2025届五下数学期末经典试题含答案
- 太原师范学院《中医传染病学》2023-2024学年第一学期期末试卷
- 江西省南昌二中2025届高三数学试题质量检测试题(一)数学试题试卷含解析
- 四川省凉山彝族自治州甘洛县2025年三年级数学第二学期期末质量跟踪监视模拟试题含解析
- 宁夏医科大学《职业生涯开发》2023-2024学年第二学期期末试卷
- 注册营养师劳动合同样本
- 汕头职业技术学院《模拟口译训练A》2023-2024学年第二学期期末试卷
- 江西农业大学南昌商学院《数字绘画创作》2023-2024学年第二学期期末试卷
- 信阳航空职业学院《短视频策划与运营》2023-2024学年第一学期期末试卷
- 浙江科技学院《视频特效设计》2023-2024学年第二学期期末试卷
- 2025年内蒙古自治区中考一模语文试题(原卷版+解析版)
- 安全教育车间级
- 对照品管理规范
- 光伏电站安全管理制度
- 2025年共青团入团积极分子考试测试试卷题库及答案
- 2025年江苏省徐州中考练习卷(1)英语试题(含答案)
- 信息科技开学第一课课件 哪吒 人工智能 机器人 信息科技
- 智能电网负荷预测-深度研究
- 甲状旁腺肿瘤护理查房
- DBJ50-T-232-2016 建设工程监理工作规程
- 新人带教流程
评论
0/150
提交评论