用汇编语言实现电话本功能详细代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、课程设计目的

运用所学的汇编语言写一个具有电话本功能的程序,达到提高动手能力及解决问题的能力。

二、设计要求

1、能够存储50个电话号码,包括人名(20个字符)、电话号码(8个字符)。

2、系统可以随时接受新的人名和电话号码。

3、具有随时查询号码的功能。要求输入人名后,在屏幕上显示相应的电话

号码。

4、具有删除号码的功能。要求输入人名后,系统自动删除相应的号码。

5、运行此系统后,要显示菜单选择的功能。

三、程序设计思想

每个人的信息包括人名和号码,人名占20个字节,外加一个$字符,电话号码占8个字节,外加一个$字符,所以每个人的信息一共占30个字节。可以开辟一片连续的存储区,包含30*50即1500个字节,

即ZHU DB 1500 DUP(0)。

另外再定义四个需要输入信息的变量,依次为:

ZHU1 DB 21,0,21 DUP(0) ;搜索姓名变量

ZHU2 DB 21,0,21 DUP(0) ;添加姓名变量

ZHU3 DB 9,0,9 DUP(0) ;添加号码变量

ZHU4 DB 21,0,21 DUP(0) ;删除姓名变量

添加新的人名和号码时,可以通过10号功能调用,先将人名和号码暂时存放在ZHU2和ZHU3中,然后在逐字节地复制到ZHU 中,记住在人名和号码末尾加上$字符。查询号码时,将输入的要查询的人名存放在ZHU1中,然后再每隔30个字节与ZHU中的人名逐个字符地比较,若完全相等,则将人名下面的号码输出,否则说明要查询的人名不存在。删除时,先输入要删除的人名,同查询相似,按同样的方法在ZHU中寻找相应的数据区,若找到了,则从找到时下面一个人的信息开始,统一向上移动30个字节,若没有找到,则说明要删除的人名的信息不存在。

五、程序清单

DATAS SEGMENT

OBF1 DB'Welcome to use this phone book!$'

OBF2 DB'Please choose the function buttom(1/2/3):$'

OBF11 DB'1 for inputing$'

OBF16 DB'2 for searching$'

OBF17 DB'3 for deleting$'

OBF18 DB'Other for exiting$'

OBF3 DB'Please input a new name(within 20 words):$'

OBF4 DB'please input the number(within 8 numbers):$'

OBF5 DB'Continue to input?(y/n)$'

OBF6 DB'Are you sure to end the phone book?(y/n)$'

OBF7 DB'Please input a name you want to search(within 20 words):$' OBF8 DB'Got it,it is:$'

OBF9 DB'Have not found ,it does not exit!$'

OBF10 DB'Continue to search?(y/n)$'

OBF12 DB'Please input the name you want to delete(within 20 words):$' OBF13 DB'The name you want to delete does not exit!$'

OBF14 DB'Success to delete!$'

OBF15 DB'Continue to delete?(y/n)$'

ZHU1 DB 21,0,21 DUP(0) ;搜索(查询)姓名变量

ZHU2 DB 21,0,21 DUP(0) ;添加姓名变量

ZHU3 DB 9,0,9 DUP(0) ;添加号码变量

ZHU4 DB 21,0,21 DUP(0) ;删除姓名变量

ZHU DB 1500 DUP(0)

DATAS ENDS

STACKS SEGMENT

DW 32 DUP(0)

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:MOV AX,DATAS

MOV DS,AX

MOV BP,-30

BEGIN:CALL NEXTLINE

MOV DX,OFFSET OBF1 ;显示菜单选择界面

MOV AH,9

INT 21H

CALL NEXTLINE ;调用换行函数

MOV DX,OFFSET OBF2

MOV AH,9

INT 21H

CALL NEXTLINE

MOV DX,OFFSET OBF11

MOV AH,9

INT 21H

CALL NEXTLINE

MOV DX,OFFSET OBF16

MOV AH,9

INT 21H

CALL NEXTLINE

MOV DX,OFFSET OBF17

MOV AH,9

INT 21H

CALL NEXTLINE

MOV DX,OFFSET OBF18

MOV AH,9

INT 21H

CALL NEXTLINE

MOV AL,0

MOV AH,1

INT 21H

CMP AL,'1' ;选择1,输入信息

JE INPUT

CMP AL,'2' ;选择2,查询信息

JE SEARCH

CMP AL,'3' ;选择3,删除信息

JE DELETE

JMP STOP

INPUT: CALL NEXTLINE

ADD BP,30

MOV SI,BP

S2:MOV BYTE PTR ZHU[SI],0 ;清除ZHU中最后一个人的信息后面的30 INC SI ; 个字节中非0的单元

CMP [SI],0

JNE S2

MOV SI,BP

MOV DX,OFFSET OBF3

MOV AH,9

INT 21H

MOV DX,OFFSET ZHU2 ;输入的人名存放在ZH2中

MOV AH,10

INT 21H

MOV BX,-1

相关文档
最新文档