📄 phone.asm
字号:
data segment
alpherbit db 50 dup(20 dup(0),8 dup(0))
linshi dw 0
count db 0
temp1 db 20,?,20 dup(?)
temp2 db 10,?,8 dup(?)
anwser1 db ' Input name:',13,10,'$'
anwser2 db 'Input a telephone number:',13,10,'$'
anwser3 db 'Do you want a telephone number?(Y/N)',13,10,'$'
anwser4 db 'Name?',13,10,'$'
anwser5 db 'Do you want to input a name?(Y/N)',13,10,'$'
error db 'error input!',13,10,'$'
nomatch db 'sorry!no match!',13,10,'$'
data ends
prognam segment
main proc far
assume cs:prognam,ds:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
again:
mov ah,09h
lea dx,anwser5
int 21h
mov ah,01h
int 21h
push ax
call huanhang
pop ax
cmp al,4eh
jnz d1
call name_sort
jmp again2
d1:
cmp al,59h
jz d2
mov ah,09h
lea dx,error
int 21h
jmp again
d2:
mov ah,09h
lea dx,anwser1
int 21h
call input_name
call huanhang
call stor_name
mov ah,09h
lea dx,anwser2
int 21h
call inphone
call huanhang
jmp again
again2:
mov ax,0
mov ah,09h
lea dx,anwser3
int 21h
mov ah,01h
int 21h
push ax
call huanhang
pop ax
cmp al,4eh
jz do1
cmp al,59h
jz do2
mov ah,09h
lea dx,error
int 21h
jmp again2
do2:
mov ah,09h
lea dx,anwser4
int 21h
call input_name
call huanhang
call name_search
call printline
jmp again2
do1:
ret
main endp
input_name proc near
lea dx,temp1
mov ah,0ah
int 21h
mov si,1
mov cl,temp1[si]
show1:
inc si
mov ah,02h
mov dl,temp1[si]
int 21h
loop show1
ret
input_name endp
stor_name proc near
mov si,0
more:
cmp alpherbit[si],0
jz next
add si,28
jmp more
next:
mov bx,0
mov bl,1
add count,bl
mov cx,0
mov cl,[temp1+1]
mov bx,2
again3:
mov dl,temp1[bx]
mov alpherbit[si],dl
inc si
inc bx
loop again3
mov dx,0
mov al,[temp1+1]
mov dl,20
sub dl,al
add si,dx
ret
stor_name endp
name_sort proc near
mov cl,count
cmp cl,2
jb exit3
dec cl
mov si,0
loop1:
push si
mov bl,alpherbit[si]
cmp alpherbit[si+28],bl
jnz next2
inc si
jmp loop1
next2:
jb do3
jmp exit2
do3:
push cx
mov cl,28
loop2:
mov bl,alpherbit[si]
mov dl,alpherbit[si+28]
mov alpherbit[si],dl
mov alpherbit[si+28],bl
inc si
loop loop2
pop cx
exit2:
pop si
add si,28
loop loop1
exit3:
ret
name_sort endp
inphone proc near
mov ah,0ah
lea dx,temp2
int 21h
mov cx,8
mov bx,2
again4:
mov dl,temp2[bx]
mov alpherbit[si],dl
inc si
inc bx
loop again4
mov si,1
mov cl,temp2[si]
show2:
inc si
mov ah,02h
mov dl,temp2[si]
int 21h
loop show2
ret
inphone endp
name_search proc near
mov si,0
mov cx,50
again5:
push cx
mov bx,1
push si
mov cl,temp1[bx]
inc bx
loop3:
mov dl,temp1[bx]
cmp alpherbit[si],dl
jz next3
pop si
add si,28
pop cx
loop again5
lea dx,nomatch
mov ah,09h
int 21h
jmp finish
next3:
inc si
inc bx
loop loop3
pop si
pop cx
finish:
ret
name_search endp
printline proc near
mov cx,20
loop4:
mov dl,alpherbit[si]
mov ah,02h
int 21h
inc si
loop loop4
mov cx,10
loop5:
mov ah,02h
mov dl,20h
int 21h
loop loop5
mov cx,8
loop6:
mov dl,alpherbit[si]
mov ah,02h
int 21h
inc si
loop loop6
mov ah,02h
mov dl,0ah
int 21h
mov ah,02h
mov dl,0dh
int 21h
ret
printline endp
huanhang proc near
mov ah,02h
mov dl,0ah
int 21h
mov ah,02h
mov dl,0dh
int 21h
ret
huanhang endp
prognam ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -