| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 582 人关注过本帖
标题:程序都点问题,请牛鼻的人指正一下,谢谢先
只看楼主 加入收藏
langzi1190
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-12-23
收藏
 问题点数:0 回复次数:0 
程序都点问题,请牛鼻的人指正一下,谢谢先

查找电话号码

要求:

(1)要求程序建立一个可存放50项的电话号码表,每项包括人名(20个字符)及电话号码(8个字符)两个部分;

(2)程序可接收输入人名及相应的电话号码,并把它们加入电话号码表中;

(3)凡有新的输入后,程序应按人名对电话号码表重新排序;

(4)程序可接收需要查找电话号码的人名,并从电话号码表中查出其电话号码,再在屏幕上以如下格式显示出来

name tel.

********* *********

提示:程序采用子程序结构,主程序的主要部分如下:

显示 提示符‘input name: ’

调用子程序input_name接收人名

调用子程序stor_name把人名存入电话号码表tel_tab中;

显示提示符‘input a telephone number: ’

调用子程序inphone接收电话号码,并把它存入电话号码表tel_tab中

如输入已结束则调用name_sort子程序对电话号码表按人名排序;

显示提示符:do you want a telephone number?(Y/N);

回答N则退出程序;

回答Y则在显示提示符name?

调用子程序input_name接收人名

调用子程序name_search在电话号码表中查找所要的电话号码;

调用子程序printline按要求格式显示人名及电话号码

重复查号提示符直至用户不再要求查号为止;
我的程序如下(没有编排序的子程序),但有点问题往高手赐教
;*****************************************************
tel_tab struc
username db 20,0,20 dup(?) ;结构体,32B\
tel db 8, 0,8 dup(?)
tel_tab ends
;*****************************************************
data segment
message1 db 'Input name:','$'
message2 db 'Input a telephone number:','$'
message3 db 'Do you want a telephone number?(Y/N)?','$'
message4 db 'name?','$'
message5 db 'name', 7 dup(' '),'tel.','$'
space db 7 dup(' '),'$'
table tel_tab 50 dup(<>)
mid db 0
mid2 dw 0
name1 db 20,0,20 dup(?)

data ends
;*****************************************************
code segment
main proc far
assume cs:code,ds:data
start: mov ax,data
mov ds,ax

lea dx,message1 ;display message1
mov ah,09h
int 21h


call input_name
call newline
call stor_name

lea dx,message2 ;display message2
mov ah,09h
int 21h

call newline
call inphone

repeat: lea dx,message3 ;display message3
mov ah,09h
int 21h

mov ah,01h
cmp al,'N'
je exit

call newline

lea dx,message4 ;display message4
mov ah,09h
int 21h

call newline
call input_name
call name_search
call printline

jmp repeat

exit: mov ax,4c00h
int 21h
main endp
;***************************************************
printline proc near
lea dx,message5
mov ah,09h
int 21h

call newline
mov bx,ax
add bx,offset table
mov mid2,bx
mov dx,offset [mid2].username[0]
mov ah,09h
int 21h

mov dl,0dh
mov ah,02h
int 21h

mov bx,ax
add bx,offset table
mov mid2,bx
mov dx,offset [mid2].tel[0]
mov ah,09h
int 21h

ret


printline endp
;***************************************************
name_search proc near
mov cl,mid
mov ch,0
mov al,mid
cbw

loop2: mov bl,32
mul bl
continue: mov dx,offset table
add dx,ax
mov mid2,dx
mov bl,[mid2].username[1]
cmp bl,name1[1]
je find
inc ax
loop loop2
jmp exit1

find: dec cx
push cx
mov cl,name1[1]
mov ch,0
mov bx,02h
mov di,bx
loop3: mov dx,ax
add dx,offset table
mov mid2,dx
mov bl,[mid2].username[di]
cmp bl,name1[di]
jne pop1
inc di
loop loop3
jmp exit1
pop1: inc ax
jmp continue
exit1: pop cx

ret
name_search endp
;***************************************************
inphone proc near
mov al,mid
mov ah,0h
mov bl,32d
mul bl
mov dx,ax
add dx,offset table
mov mid2,dx
lea dx,[mid2].tel[0]
mov ah,0ah
int 21h

inc mid
ret

inphone endp
;***************************************************
newline proc near
mov dl,0dh
mov ah,02h
int 21h
mov dl,0ah
mov ah,02h
int 21h
ret
newline endp
;***************************************************
input_name proc near

lea dx,name1
mov ah,0ah
int 21h
ret
input_name endp
;***************************************************
stor_name proc near
mov al,mid
mov ah,0
mov bl,32d
mul bl

mov cx,0022d
mov si,0
loop1: mov bl,name1[si]
mov dx,ax
add dx,offset table
mov mid2,dx
mov [mid2].username[si],bl
inc si
loop loop1

ret
stor_name endp
;****************************************************


code ends
end main

2006-12-23 18:04
快速回复:程序都点问题,请牛鼻的人指正一下,谢谢先
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028765 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved