汇编语言实现通讯录

一、 实验任务 实现一个通讯录,包含联系人的姓名及电话。 功能包括增、删、改、查以及显示。 二、实验过程(算法分析/调试运行情况及数据记载) 1、逻辑结构: 2、实验代码: DATAS SEGMENT;此处输入数据段代码;主菜单 order1 db'**** main ****$' order2 db'1.inp
摘要由CSDN通过智能技术生成

一、 实验任务
实现一个通讯录,包含联系人的姓名及电话。
功能包括增、删、改、查以及显示。
二、实验过程(算法分析/调试运行情况及数据记载)
1、逻辑结构:
这里写图片描述
2、实验代码:

   DATAS SEGMENT
;此处输入数据段代码
;主菜单
 order1 db'**** main ****$'
 order2 db'1.input$'
order3 db'2.select$'
order4 db'3.show$' 
order5 db'4.exit$' 
;选择提示
choose db'Please choose the number(1/2/3/4):$'
out1 db'Please input a new name(within 20 words):$'
out2 db'Please input a new number(within 8 words):$'
out3 db'Please input the name:$'
out4 db'Can not find.$'
out5 db'Do you want to delete or updata it or back(d/u/b):$'
out6 db'Deleted it.$'
out7 db'Updated it.$'
out8 db'Continue to input(y/n):$'
out9 db'Please choose to update the name or number(1/2):$'
;用于暂时存放输入的数据
sname db 21,0,21 DUP(0);搜索姓名变量
addname db 21,0,21 DUP(0);添加姓名变量
addnum db 9,0,9 DUP(0);添加号码变量
dname db 21,0,21 DUP(0);删除姓名变量

;共1500个字节存放联系人信息,每个联系人占30个字节
phonebook db'abc',17 dup(0),'$12345678$'
         db'bcbc',16 dup(0),'$23452345$'
         db'liu',17 dup(0),'$1234',4 dup(0),'$'
         db'shao',16 dup(0),'$567567',2 dup(0),'$'
         db'liang',15 dup(0),'$34563456$'
         db 1350 dup(0)
;存储所有的联系人及电话信息
;每个联系人name占20个字节加一个$字符
;每个联系人num占8个字节加一个$字符
;一个联系人占30个字节,总共能存储50个联系人的信息
DATAS ENDS

STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
;bp指向phonebook中最后一个联系人的偏移地址的开始
mov bp,120
main:
;显示菜单,输入要选择的功能
call nextline;换行
mov dx,offset order1
mov ah,9
int 21h
call nextline

mov dx,offset order2
mov ah,9
int 21h
call nextline

mov dx,offset order3
mov ah,9
int 21h
call nextline

mov dx,offset order4
mov ah,9
int 21h
call nextline

mov dx,offset order5
mov ah,9
int 21h
call nextline


mov dx,offset choose
mov ah,9
int 21h
;菜单及选择语句输出完毕

;调用01号功能,接收输入的字符,放置在al中
mov al,0
mov ah,01
int 21h
;判断并跳转至子程序
cmp al,'1'
je adds

cmp al,'2'
je select

cmp al,'3'
je show

cmp al,'4'
je exit

adds:
;增加新的联系人
call nextline
add bp,30
;si指向要存入的联系人的首地址
mov si,bp
;显示提示
mov dx,offset out1
mov ah,09
int 21h
;将输入的name存放在addname中
mov dx,offset addname
mov ah,0ah
int 21h

mov bx,-1

s1:;将bx+2指向回车字符
 inc bx
 cmp byte ptr addname[bx+2],0dh
 jne s1;不等于则转移
;将addname中回车字符后的字节归零
s2:
 mov byte ptr addname[bx+2],0
 inc bx
 cmp bx,20
 jne s2

 mov byte ptr addname[bx+2],0dh
 mov cx,20
 mov bx,-1
 ;将输入的name写入phonebook中
s3: 
 inc bx
 mov dl,addname[bx+2]
 mov phonebook[si+bx],dl
 loop s3
 mov phonebook[si+20],'$'
 call nextline

 ;显示提示  
 mov dx,offset out2
 mov ah,09
 int 21h
 ;将输入的num存放在addnum中
 mov dx,offset addnum
 mov ah,0ah
 int 21h

 mov bx,-1

s4:;将bx+2指向回车字符
in

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值