主题:急 急!!!汇编编写电话簿
fyq10000
[专家分:0] 发布于 2007-06-12 01:40:00
急啊!有高手帮下没
回复列表 (共4个回复)
沙发
liangbch [专家分:1270] 发布于 2007-06-12 18:37:00
1. 先提个需求写,要实现什么功能?
2. 电话簿不是一个简单的东西(我见过商务通的电话模块的C程序,代码近万行。),为什么要用汇编写,费力不讨好,是不是你们老师出的题?
3。 如果你对需求没有概念,我列个功能需要,可能不全?
1。输入功能:
1)能够输入新的联系人,包括(姓名,单位电话,住宅电话,手机,e-mail,单位,地址),这些项目中的某项可能为空。
2。能够修改或者删除某个联系人。
2。检索功能
1)能够通过 姓名的一部份或者完整的姓名查到这个联系人
2)能够通过 姓名的拼音缩写的这个联系人
3)能够显示 按访问顺序显示 最近的联系人
4)能够通过其他字段,如电话(办公,住宅,手机)查找联系人。
3。数据组织如何实现,是否储存到文件?是否可导出其它软件使用的格式,如outlook,outlook express,某种手机的通讯簿格式。
板凳
fyq10000 [专家分:0] 发布于 2007-06-12 18:56:00
恩,老师叫的了,简单点就好。本来想用C语言实现,再要个反汇编。可惜行不通!
要求没什么的
我们就学了一个学期
学了点皮毛而已
有最基本的功能就可以了
3 楼
liangbch [专家分:1270] 发布于 2007-06-12 20:39:00
"想用C语言实现,再要个反汇编", 反汇编的代码太过难懂,难于维护.
正确的做法是:
1。确定功能,和界面
2。用C语言实现。
3。想办法改为汇编实现,I/O 改为dos/bios调用(16位dos程序)或者win32api(32位windows程序).直接用汇编写,容易陷入细节,难于调试.
4 楼
塞北江南 [专家分:1350] 发布于 2007-06-13 11:05:00
.model small
.stack
.data
string1 db 'Please input name:$'
string2 db 20,0, 20 dup(?),'$'
string3 db 10,13," Haven't this person!....",10,13,'$'
person struct ;结构定义
pid db 0 ;编号
pname db '--------------------$';最多20位,姓名
phome db '---------------$' ;最多15位 ,宅电
poffice db '----------------$';最多15位 ,办公室
pmobile db '--------------$';最多15位 ,手机
person ends
telbook person <1,'zhangsan$','010-12344321$','010-87654321$','13913913999$'>
person <2,'lisi$','020-43211234$','020-12345678$','13187654321$'>
person <3,'wanger$','021-87654321$','021-6666666$','13712345678$'>
person <4,'zhuwu$','025-87654321$','025-6666666$','13612345678$'>
person <5,'john$','110$',,'119 110 120$'>
;电话号码长度可以任意,这里只列举5个
tablelength=($-telbook)/(type telbook)
.code
nextline macro ;显示换行当宏
mov ah,2
mov dl,10
int 21h
mov ah,2
mov dl,13
int 21h
endm
.startup
mov ax,ds
mov es,ax
begin:
mov dx,offset string1
mov ah,9
int 21h
mov dx,offset string2 ;输入name
mov ah,10
int 21h
mov ax,type telbook
lea bx,offset telbook
lea di,[bx].person.pname
mov dx,tablelength
.repeat
mov ch, 0
mov cl,string2[1]
lea si,string2[2]
repe cmpsb ;找到不同的字符为止
.if zero? ;若没有不同字符,则找到此人
nextline
lea dx,[bx].person.phome ;显示宅电
mov ah,9
int 21h
nextline
lea dx,[bx].person.poffice ;显示办公室电话
mov ah,9
int 21h
nextline
lea dx,[bx].person.pmobile ;显示手机
mov ah,9
int 21h
.exit 0
.else ;继续找下一个
add bx,type telbook
lea di,[bx].person.pname
.endif
dec dx
.until dx==0
mov dx,offset string3 ;没找到
mov ah,9
int 21h
jmp begin
end
运行结果如下:
Please input name:zhuwu
025-87654321
025-6666666
13612345678
我来回复