《汇编语言》课程设计电话号码管理程序.docx

上传人:b****6 文档编号:15730796 上传时间:2023-07-07 格式:DOCX 页数:38 大小:88.55KB
下载 相关 举报
《汇编语言》课程设计电话号码管理程序.docx_第1页
第1页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第2页
第2页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第3页
第3页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第4页
第4页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第5页
第5页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第6页
第6页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第7页
第7页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第8页
第8页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第9页
第9页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第10页
第10页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第11页
第11页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第12页
第12页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第13页
第13页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第14页
第14页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第15页
第15页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第16页
第16页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第17页
第17页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第18页
第18页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第19页
第19页 / 共38页
《汇编语言》课程设计电话号码管理程序.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《汇编语言》课程设计电话号码管理程序.docx

《《汇编语言》课程设计电话号码管理程序.docx》由会员分享,可在线阅读,更多相关《《汇编语言》课程设计电话号码管理程序.docx(38页珍藏版)》请在冰点文库上搜索。

《汇编语言》课程设计电话号码管理程序.docx

《汇编语言》课程设计电话号码管理程序

摘要

现代社会人与人之间进行通讯的主要工具离不开电话,当打电话给某人时,从电话簿中繁多的信息中查找对应的号码是很繁琐的事情。

根据现代人对快速查找电话簿信息的实际需要,设计了电话号码管理程序。

该程序是典型的信息管理程序,采用MasmforWindows为编译环境,DOS为运行环境,核心语言是汇编语言。

本程序主要分为五大模块:

选择查找模块,增添模块,修改模块,删除模块和显示模块。

通过需求分析、程序设计、测试等过程,实现了对信息查找、增添、修改、删除和显示功能。

该程序满足了人们翻阅电话簿的实际需求,人们可以通过该电话号码管理程序随时调用电话号码簿,方便自己与他人的沟通,优化了信息配置,提高了生活效率,加速了生活节奏。

 

关键词:

电话簿,信息管理,MasmforWindows

1选题背景及意义

进入21世纪以来,现代社会步入了高速的信息化的时代,人际之间的交往,新闻事件的传播,高科技设备的应用,远程技术操作,都离不开通讯设备。

对于个人而言,最常用的莫过于电话了。

但是伴随电话的普及,杂乱无章的电话号码持续困扰着人们,这反而成了现代高科技、信息化社会下的一块障碍,是快节奏下人们很难避免的一大问题。

随着信息技术的高速发展和各种各样的通讯设备的引入,作为人与人之间通讯的数据库,电话簿也要适应时代的发展。

现代通讯应该利用新的数据管理技术,开发数据管理程序,这样才能在激烈的现代社会中适应高节奏步伐。

2主要设计内容及预期目标

图2-1程序功能模块图

本管理程序采用了MasmforWindows为编译化境,DOS为运行环境,核心语言是汇编语言,使用者可以通过该管理程序灵活使用自己的电话簿,方便使用者。

该程序实施后,能够满足用户对号码选择查找,号码增添,号码修改,号码删除和号码显示进行操作,提高生活效率。

程序功能模块图如图2-1所示。

3概要设计

根据对工作流程的分析,程序可以分为以下几个功能模块。

(1)选择查找:

根据姓名或电话查找目标信息。

(2)增添:

根据姓名与电话号码为信息增添。

(3)修改:

查找要修改的信息对应的姓名,从而修改此信息。

(4)删除:

查找要删除的信息对应的姓名,从而删除此信息。

(5)显示:

显示电话号码簿中储存的全部信息。

整个程序由主程序和六个分支程序组成,主程序负责对各个子程序的调用,完成程序的主体功能。

主程序如图3-1。

各个子程序负责不同的操作指令,完成对电话号码簿的详细操作。

程序流程如图3-2。

图3-1主程序界面图

 

图3-2主程序流程图

4详细设计

4.1选择查找模块

选择查找模块。

该模块用来实现选择操作内容和以姓名或号码为查询关键字,对目标文件信息查询操作。

按钮使“1:

Select”,进入信息选择模式。

在运行过程中,在“Key6tomainmenu!

”提示下按“6”,程序重新回到主菜单。

在“1:

Selectbyname”提示下按“1”,查询进入以姓名为入口的查找方式,显示要查找的姓名和对应的号码;在“2:

Selectbytelephone”提示下按“2”,查询进入以号码为入口的查找方式,显示要查找的号码和对应的姓名。

选择查找程序界面如图4-1。

子程序流程如图4-2。

图4-1选择查找程序界面图

 

 

图4-2子程序流程图

4.2增添模块

增添模块。

该模块用来实现增添操作姓名和号码,对目标文件信息添加操作。

按钮使“2:

Insert”,进入增添模式。

在运行过程中,在“Key6tomainmenu!

”提示下按“6”,程序重新回到主菜单。

在“Name:

”提示下输入姓名,在“Tele:

”提示输入号码。

每次输入完成后使用回车表示输入的结束,并且进入下一条操作。

增添程序界面如图4-3。

图4-3增添程序界面图

4.3修改模块

修改模块。

该模块用来实现修改操作内容和以姓名或号码为查询关键字,对目标文件信息修改操作。

按钮使“3:

Modify”,进入修改模式。

在运行过程中,在“Key6tomainmenu!

”提示下按“6”,程序重新回到主菜单。

在“Name:

”提示下输入姓名,在“Tele:

”提示输入号码。

每次输入完成后使用回车表示输入的结束,并且进入下一条操作。

修改程序界面如图4-4。

图4-4修改程序界面图

4.4删除模块

删除模块。

该模块用来实现删除操作内容和以姓名或号码为查询关键字,对目标文件信息删除操作。

按钮使“4:

Delete”,进入信息删除模式。

在运行过程中,在“Key6tomainmenu!

”提示下按“6”,程序重新回到主菜单。

在“Name:

”提示下输入姓名,在“Tele:

”提示输入号码。

每次输入完成后使用回车表示输入的结束,并且进入下一条操作。

删除程序界面如图4-5。

图4-5删除程序界面图

4.5显示模块

显示模块。

该模块用来实现显示内容和以姓名或号码为查询关键字,对目标文件信息显示操作。

按钮使“5:

Showallrecord”,进入信息显示模式。

在运行过程中,在“Key6tomainmenu!

”提示下按“6”,程序重新回到主菜单。

显示程序界面如图4-6。

图4-6显示程序界面图

5使用说明

(1)打开计算机启动WindowsXP操作系统。

(2)打开“开始”,选择“所有程序”,打开“MasmforWindows集成实验环境”下的“MasmforWindows集成实验环境”文件。

(3)保存空白文件到指定区域,导入程序。

(4)依次点击“运行”工具栏下“编译成目标文件”;“生成可执行文件”;“生成动态链接库文件”。

最后点击“运行”即可在DOS环境下运行该程序。

 

6设计总结

为期两周的汇编语言课程设计已经结束了,但在两周的设计中,我认为自己有颇多得收获。

我们知道,汇编语言课程设计是我们计算机控制专业教学计划中的必不可少的实践环节,不仅巩固了我们所学的书本知识,而且为我们提供了一次理论与实践相结合的机会。

电话号码管理程序是信息管理程序中比较典型的。

系统地介绍了电话号码管理程序的开发过程,程序设计中隐含的问题及手机缺陷,通过实际使用找寻解决方法以便提高当前应用程序和改善工作性能.利用其提供的各种选项,在短时间内对电话号码簿进行查询等操作。

所以从一开始我就特别重视,想借此机会锻炼一下自己解决实际问题的能力,为以后的工作或学习打好基础。

确立设计题目之后,我就去大量搜集查阅相关资料,并提取有效素材,付出大量的精力,整合程序实现的全部功能。

该程序能够根据使用者的需求,快捷方便的为使用者提供服务。

对本设计题目进行的总体构思与设计,是先将该课题按所实现的功能将其分为查询、添加、修改、删除和显示模块,这样就会在脑海中形成一个清晰的设计思路,然后将这些功能模块通过主程序调用来实现。

然后就是分别编译子程序,使得每一个子程序实现各自的功能,完成不同的任务操作。

通过利用在课堂上学到的知识点和指令,并且搜集相关素材,先从主程序开始,然后一步一步的分别编写各个功能模块,为了使程序变得易读易修改,我采用分层标记的方式注明每一个模块,同时借鉴一些相关编程经验结合自己的设计思想完成这项任务。

最后调试程序,加以修改和完善,使得程序多而不乱。

总之,通过这次课程设计,使我更加认识到理论结合实际的重要性,只有将所学的理论知识灵活运用到实际中去才会体会到学习的乐趣。

我们不但要学习好书本上的理论知识,还要经常利用这些知识点活学活用,更多得思考与实践。

在每一次程序设计中反复总结经验教训,在失败中思考,学到更多实际的东西。

7程序清单

stackssegment;堆栈段代码

dw512dup(?

stacksends

datassegment;数据段代码

titlestrdb'Welcometothetelephonedirectory!

',0dh,0ah,'Pleaseenteryourchoice!

',0dh,0ah,'$'

Menustrdb'1:

Select',0dh,0ah,'2:

Insert',0dh,0ah,'3:

Modify',0dh,0ah,'4:

Delete',0dh,0ah,'5:

Showallrecord',0dh,0ah,'8:

Esc',0dh,0ah,'$'

namelistdb20dup(20dup(?

))

telelistdb20dup(20dup(?

))

newnamedb20dup(?

newteledb20dup(?

cntdb1dup(?

cntselectdb1dup(?

choicedb1dup(?

entereddb0dh,0ah,'$'

disnamedb'Name:

$'

disteledb'Tele:

$'

backstrdb'Key6tomainmenu!

',0dh,0ah,'$'

disstrdb'Allrecord!

',0dh,0ah,'$'

selstr1db'1:

Selectbyname',0dh,0ah,'2:

Selectbytelephone',0dh,0ah,'$'

selstr2db'Theimformation!

',0dh,0ah,'$'

selstr3db'Nameisnotexist!

',0dh,0ah,'$'

selstr4db'Telephoneisnotexist!

',0dh,0ah,'$'

selstr5db'Telephonedirectoryisempty!

',0dh,0ah,'$'

addstr1db'Insertthenewnameandnewtele!

',0dh,0ah,'$'

addstr2db'Telephonedirectoryisfull!

',0dh,0ah,'$'

addstr3db'Addsuccessfully!

',0dh,0ah,'$'

modstr1db'Newname:

$'

modstr2db'Newtele:

$'

modstr3db'Inputnewrecord!

',0dh,0ah,'$'

modstr4db'Modifiedsuccessfully!

',0dh,0ah,'$'

delstr1db'Telephonedirectoryisempty!

',0d,0ah,'$'

delstr2db'Deletedsuccessfully!

',0dh,0ah,'$'

name1db'aaaaaaaaa$'

name2db'bbbbbbbbb$'

name3db'ccccccccc$'

name4db'ddddddddd$'

name5db'eeeeeeeee$'

telephone1db'11111111111$'

telephone2db'22222222222$'

telephone3db'33333333333$'

telephone4db'44444444444$'

telephone5db'55555555555$'

datasends

codessegment;代码段代码

mainprocfar

assumecs:

codes,ds:

datas

displaytitleprocnear;显示主菜单

movdx,offsettitlestr

movah,9

int21h

leadx,menustr

movah,9

int21h

displaytitleendp

cshdataprocnear;输入对比

movbx,0

movsi,offsetname1;045name1db'aaaaaaaaa$'

leadi,namelist

adddi,bx

movcx,20

cshname11:

moval,[si];073movsi,offsetname1

mov[di],al;074leadi,namelist

incsi

incdi

cmpal,'$';比较name1是否为空

jzcshname12;ZF=1结果为零跳转

loopcshname11;077movcx,20

cshname12:

addbx,20

movsi,offsetname2;046name2db'bbbbbbbbb$'

leadi,namelist

adddi,bx

movcx,20

cshname21:

moval,[si];073movsi,offsetname1

mov[di],al;074leadi,namelist

incsi

incdi

cmpal,'$';比较name1是否为空

jzcshname22;ZF=1结果为零跳转

loopcshname21;092movcx,20

cshname22:

addbx,20

movsi,offsetname3;047name3db'ccccccccc$'

leadi,namelist

adddi,bx

movcx,20

cshname31:

moval,[si];073movsi,offsetname1

mov[di],al;074leadi,namelist

incsi

incdi

cmpal,'$';比较name1是否为空

jzcshname32;ZF=1结果为零跳转

loopcshname31;108movcx,20

cshname32:

addbx,20

movsi,offsetname4;048name4db'ddddddddd$'

leadi,namelist

adddi,bx

movcx,20

cshname41:

moval,[si];073movsi,offsetname1

mov[di],al;074leadi,namelist

incsi

incdi

cmpal,'$';比较name1是否为空

jzcshname42;ZF=1结果为零跳转

loopcshname41;124movcx,20

cshname42:

addbx,20

movsi,offsetname5;049name5db'eeeeeeeee$'

leadi,namelist

adddi,bx

movcx,20

cshname51:

moval,[si];073movsi,offsetname1

mov[di],al;074leadi,namelist

incsi

incdi

cmpal,'$';比较name1是否为空

jzcshname52;ZF=1结果为零跳转

loopcshname51;140movcx,20

cshname52:

addbx,20

movax,bx;初始化计数器cnt

movbl,20

divbl

leasi,cnt;013cntdb1dup(?

mov[si],al;(al)<-(ax)/(bl)的商

movbx,0

leasi,telephone1

movdi,offsettelelist

adddi,bx

movcx,20

cshtele11:

moval,[si];159movsi,offsettelephone1

mov[di],al;160leadi,telelist

incsi

incdi

cmpal,'$';比较telephone1是否为空

jzcshtele12;ZF=1结果为零跳转

loopcshtele11;162movcx,20

cshtele12:

addbx,20

leasi,telephone2

movdi,offsettelelist

adddi,bx

movcx,20

cshtele21:

moval,[si];159movsi,offsettelephone1

mov[di],al;160leadi,telelist

incsi

incdi

cmpal,'$';比较telephone1是否为空

jzcshtele22;ZF=1结果为零跳转

loopcshtele21;178movcx,20

cshtele22:

addbx,20

leasi,telephone3

movdi,offsettelelist

adddi,bx

movcx,20

cshtele31:

moval,[si];159movsi,offsettelephone1

mov[di],al;160leadi,telelist

incsi

incdi

cmpal,'$';比较telephone1是否为空

jzcshtele32;ZF=1结果为零跳转

loopcshtele31;194movcx,20

cshtele32:

addbx,20

leasi,telephone4

movdi,offsettelelist

adddi,bx

movcx,20

cshtele41:

moval,[si];159movsi,offsettelephone1

mov[di],al;160leadi,telelist

incsi

incdi

cmpal,'$';比较telephone1是否为空

jzcshtele42;ZF=1结果为零跳转

loopcshtele41;210movcx,20

cshtele42:

addbx,20

leasi,telephone5

movdi,offsettelelist

adddi,bx

movcx,20

cshtele51:

moval,[si];159movsi,offsettelephone1

mov[di],al;160leadi,telelist

incsi

incdi

cmpal,'$';比较telephone1是否为空

jzcshtele52;ZF=1结果为零跳转

loopcshtele51;210movcx,20

cshtele52:

addbx,20

ret

cshdataendp

disdataprocnear;5:

Showallrecord

movdx,offsetdisstr;020disteledb'Tele:

$'

movah,9

int21h

leasi,cnt;013cntdb1dup(?

movcl,[si]

movbx,0

disdata1:

movdx,offsetdisname;019disnamedb'Name:

$'

movah,9

int21h

leadx,namelist

adddx,bx

movah,9

int21h

movdx,offsetentered

movah,9

int21h

movdx,offsetdistele;020disteledb'Tele:

$'

movah,9

int21h

leadx,telelist

adddx,bx

movah,9

int21h

movdx,offsetentered

movah,9

int21h

addbx,20

loopdisdata1

ret

disdataendp

adderprocnear;2:

Insert

movsi,offsetcnt

moval,[si]

cmpal,20

jbadder5;CF=1不高于跳转

leadx,addstr2

movah,9

int21h

jmpadder6

adder5:

leadx,addstr1

movah,9

int21h

leadx,disname;019disnamedb'Name:

$'

movah,9

int21h

movcl,19

leasi,newname;013newnamedb20dup(?

adder1:

;逐字符输入名字

movah,1

int21h

cmpal,0dh;比较是否回车

jzadder2;ZF=1结果为零跳转

mov[si],al;279movsi,offsetcnt

incsi

loopadder1;295movcl,19

adder2:

moval,24h

mov[si],al;279movsi,offsetcnt

leasi,cnt

movbl,[si]

xorax,ax

moval,20

mulbl

movsi,offsetnewname

movdi,offsetnamelist

adddi,ax

movcx,20

cld;DF=0指针向增大方向移动

repmovsb;318movcx,20

movdx,offsetentered

movah,9

int21h

movdx,offsetdistele;020disteledb'Tele:

$'

movah,9

int21h

movcl,19

movsi,offsetnewtele

adder3:

movah,01

int21h

cmpal,0dh;比较是否回车

jzadder4;ZF=1结果为零跳转

mov[si],al;279movsi,offsetcnt

incsi

loopadder3;327movcl,19

adder4:

moval,24h

mov[si],al;279movsi,offsetcnt

leasi,cnt

movbl,[si]

xorax,ax

moval,20

mulbl

movsi,offsetnewtele

movdi,offsettelelist

adddi,ax

movcx,20

cld;DF=0指针向增大方向移动

repmovsb;350movcx,20

movdx,offsetentered

movah,9

int21h

movsi,offsetcnt

moval,[si]

incal

mov[si],al

leadx,addstr3

movah,9

int21h

movsi,offsetnewname

movcx,20

adder7:

moval,0

mov

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

当前位置:首页 > IT计算机 > 互联网

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2