⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phone.asm

📁 前一阵出去玩了
💻 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 + -