电话号码查询子程序

;***************************************************************
;电话号码查询子程序
;author:野渡无人
;create date:2007-12-20
;***************************************************************
data segment
     No_of_name    dw 15
     No_of_phone   dw 12
     total                    dw 27
     cnt_name          db 5          ;count of input name
     inbuf                   label byte
     maxlen               db 27
     buff_len              db ?
     buffer                  db 27 dup(20) 
     tel_tab                db 'Yeduwuren      13424301234 '
                                  db 'Merry          13728875678 '
                                  db 'Bob            13754781234 '
                                  db 'Smith          13874784789 '
                                  db 'Green          13779875678 '
     message1         db 'please input name:','$'
     message3         db '  NAME',10 dup(20h),'   TEL.',13,10,'$'
     message7         db 'Sorry!There is not such a name!',13,10,'$'
     crlf                        db 13,10,'$'
     search_flag        db ?          ;=1 stands for search succeed
           
data ends
;**************************************************************
prog segment
;--------------------------------------------------------------
main proc far
      assume cs:prog,ds:data
start:
       push ds
       sub  ax,ax
       push ax
 
       mov  ax,data
       mov  ds,ax
 search_rotate:
       call input_name      ;input a name into buffer

       call name_search     ;search the name and his telephone      
    
       jmp  search_rotate
      
       ret
main endp
;---------------------------------------------------------
   input_name proc near
        push ax
        push dx

        lea  dx,message1     ;prompt,input name:
        mov  ah,09
        int  21h

        mov  ah,0ah
 lea  dx,inbuf
        int  21h

 mov  ah,09
 lea  dx,crlf
 int  21h

        mov  bh,0
 mov  bl,buff_len
 mov  cx,No_of_name
 sub  cx,bx
input_loop:
 mov  buffer[bx],20h
 inc  bx
 loop input_loop

        pop  dx
        pop  ax
        ret
input_name endp
;------------------------------------------------------------  
    name_search proc near
       push ax
       push bx
       push cx
 
       mov  search_flag,0
       mov  cx,No_of_name
       mov  bh,cnt_name
name_search_rotate:
       mov  ax,total
       cmp  bh,0
       jbe  name_search_judge
       dec  bh
       mov  si,0
       mov  di,0
       mul  bh
       add  di,ax
      
name_search_continue:
       mov  bl,tel_tab[di]
       cmp  bl,buffer[si]
       jne  name_search_rotate
       inc  di
       inc  si
       loop name_search_continue
       mov  search_flag,1
name_search_judge:
       cmp  search_flag,1
       jne  name_search_failed
       mov  ah,09
       lea  dx,message3
       int  21h

       mov  cx,total
       mov  ax,total
       mov  di,0
       mul  bh
       add  di,ax
name_search_print:
       mov  ah,02
       mov  dl,tel_tab[di]
       int  21h
       inc  di
       loop name_search_print
       mov  ah,09
       lea  dx,crlf
       int  21h
       jmp  name_search_exit
name_search_failed:
       mov  ah,09
       lea  dx,message7
       int  21h
name_search_exit:
       pop  cx
       pop  bx
       pop  ax
       ret
name_search endp
;---------------------------------------------------------
prog ends
;**********************************************************
  end start 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值