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

📄 aa.asm

📁 通讯录 课程设计 可以进行查询修改删除等功能
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        rep  movsb
        lea  si,msgfind
        mov  msgadr,si
        lea  si,searchstr
        mov  msgadr+2,si
        lea  si,searchphone
        mov  msgadr+4,si
        call showmsg

        jmp  gcinput

 gc5:   cmp  al,'Q'
        jne  gc6
        call closefile
        jmp  gcinput
 gc6:
        mov  dh,23
        mov  dl,0
        call gotoxy
        lea  dx,infomsg2
        mov  ah,09h
        int  21h

        jmp  gcinputerr


getcommand endp


clrcmdline proc near

        mov  dh,24
        mov  dl,0
        call gotoxy
        mov  ah,9
        lea  dx,msgblank
        int  21h
        mov  dh,24
        mov  dl,0                                ;clear  commandbox
        call gotoxy
        ret
clrcmdline endp

clrinputstr proc near

        mov  cx,34
        lea  di,inputstr
        lea  si,msgblank
        cld
        rep  movsb
        ret
clrinputstr endp
        

 


getname   proc near


        mov  cx,30
        lea  si,msgblank
        lea  di,searchstr
        cld
        rep  movsb
        mov  dh,23
        mov  dl,0
        call gotoxy
        lea  dx,infomsg3
        mov  ah,09h
        int  21h
   getn:     

        call clrcmdline

        mov  ah,0ah
        lea  dx,inputbuf
        int  21h
        cmp  actlen,0
        jbe  getn
        cmp  actlen,30
        jbe  getnnext
        mov  actlen,30
    getnnext:
        mov  cl,actlen
        mov  ch,0
        lea  si,inputstr
        lea  di,searchstr
        cld
        rep  movsb

        ret

getname endp

getphone proc near

        mov  cx,20
        lea  si,msgblank
        lea  di,searchphone
        cld
        rep  movsb

        mov  dh,23
        mov  dl,0
        call gotoxy
        lea  dx,infomsg4
        mov  ah,09h
        int  21h
   getp:     
        call clrcmdline

        mov  ah,0ah
        lea  dx,inputbuf
        int  21h
        cmp  actlen,0
        jbe  getp
        cmp  actlen,20
        jbe  getpnext
        mov  actlen,20
   getpnext:
        mov  cl,actlen
        mov  ch,0
        lea  si,inputstr
        lea  di,searchphone
        cld
        rep  movsb

        ret

getphone  endp

 

getsearchn proc near

        mov  cx,20
        lea  si,msgblank
        lea  di,searchphone
        cld
        rep  movsb

        mov  dh,23
        mov  dl,0
        call gotoxy
        lea  dx,infomsg5
        mov  ah,09h
        int  21h
   getpn:     
        call clrcmdline

        mov  ah,0ah
        lea  dx,inputbuf
        int  21h
        cmp  actlen,0
        je   getpn
        cmp  actlen,3
        jbe  getpnextn
        mov  actlen,3
   getpnextn:
        mov  cl,actlen
        mov  ch,0
        lea  si,inputstr
        xor  ax,ax
        mov  dx,ax
   getnloop1:
        mov  al,[si]
        and  al,0fh
        dec  cx
        cmp  cx,0
        je   getnret
        push cx
   getnloop2:
        mov  bl,10
        mul  bl
        loop getnloop2
        pop  cx
        add  dl,al
        inc  si
        jmp  getnloop1
        
   getnret:
        add  dl,al
        mov  searchn,dl
        ret
        
getsearchn endp

        


additem proc near

        cmp  byte ptr filebuf,0
        je   addfirst
        call search                     ;return di
        mov  cx,0
 ailoop:
        lea  si,arraybuf
        add  si,cx
        cmp  word ptr [si],0
        je   eailoop
        add  cx,2
        jmp  ailoop
 eailoop:
        shr  cx,1
        inc  cx
        push di
        push si
        lea  si,filebuf
        sub  di,si
        pop  si
        mov  bx,di
        shr  bx,1
        pop  di
        xor  ax,ax

        cmp  lastone,0ffh
        je   addlastone

        mov  al,[di]
        mov  [si],al
        mov  [si+1],bl
        mov  [di],cl

        shl  al,1
        mov  ah,0
        lea  di,filebuf
        add  di,ax
        mov  [di+1],cl

        mov  ax,cx
        dec  ax

 addstr:
        mov  bl,50
        mul  bl
        add  ax,251*2
        lea  di,filebuf
        add  di,ax
        lea  si,searchstr
        mov  cx,30
        cld
        rep  movsb
        mov  cx,20
        lea  si,searchphone
        cld
        rep  movsb
        
        inc  byte ptr filebuf
        

        call showitems

        ret

 addfirst:
        lea  si,filebuf
        mov  byte ptr [si+1],1
        mov  word ptr [si+2],0ff00h
        mov  ax,0
        jmp  addstr
 addlastone:
        mov  byte ptr[si+1],0ffh
        mov  [si],bl
        mov  [di+1],cl
        mov  al,cl
        dec  al
        jmp  addstr

additem endp


        


        

 

delitem proc near

ret
delitem endp

 

edititem proc  near
ret
edititem endp

 

search proc near

        mov  exactmatch,0
        mov  lastone,0
        lea  si,filebuf
        inc  si
   sealoop:
        mov  al,[si]
        xor  ah,ah
        mov  bx,ax
        push ax
        shl  ax,1
        lea  di,filebuf
        mov  si,di
        add  di,ax
        pop  ax
        dec  ax
        push bx
        mov  bl,50
        mul  bl
        pop  bx
        add  si,251*2
        add  si,ax
        push si
        push di
        mov  di,si
        lea  si,searchstr
        mov  cx,30
        cld
        repe cmpsb
        pop  di
        pop  si
        ja   seanext
        jne  searet
        mov  exactmatch,1
   searet:
        ret
  seanext:
        mov  si,di
        inc  si
        cmp  byte ptr [si],0ffh
        je   lastret             
        jmp  sealoop              
  lastret:
        mov  lastone,0ffh
        ret                      

        
search endp

 

searchnitem proc near

        mov  lastone,0
        lea  si,filebuf
        inc  si
        mov  dl,0
   nsealoop:
        mov  al,[si]
        inc  dx
        xor  ah,ah
        mov  bx,ax
        push ax
        shl  ax,1
        lea  di,filebuf
        mov  si,di
        add  di,ax
        pop  ax
        dec  ax
        cmp  dl,searchn
        je   nsearet
        jmp  nseanext
   nsearet:
        ret
  nseanext:
        mov  si,di
        inc  si
        cmp  byte ptr [si],0ffh
        je   nlastret             
        jmp  nsealoop              
  nlastret:
        mov  lastone,0ffh
        ret

searchnitem endp

 

showitems proc near
        mov  showin,1
        lea  si,filebuf
        cmp  byte ptr[si],0
        je   sempty
        inc  si
  sloop:
        mov  al,[si]
        xor  ah,ah

        push ax
        shl  ax,1
        lea  di,filebuf
        mov  si,di
        add  di,ax
        pop  ax

        dec  ax
        mov  bl,50
        mul  bl
        add  si,251*2
        add  si,ax

        mov  bp,si
        mov  al,1
        mov  cx,30
        mov  dh,showin
        cmp  dh,22
        jb   shinext
        call scrollscr
  shinext:      
        mov  dl,0
        mov  bh,0
        mov  bl,namcolor
        mov  ah,13h
        int  10h
        inc  showin          ;increace shown items number
        add  bp,30
        mov  cx,20
        mov  dl,44
        mov  bl,phcolor
        int  10h

        mov  si,di
        inc  si
        cmp  byte ptr[si],0ffh
        je   showend
        jmp  sloop
   showend:
        mov  dh,showin
        cmp  dh,22
        jb   shnext2
        call scrollscr
   shnext2:
        mov  dl,0
        call gotoxy
        mov  ah,9
        lea  dx,msgeol
        int  21h
        ret
   sempty:
        mov  dh,1
        mov  dl,0
        call gotoxy

        lea  dx,msgempty
        mov  ah,9        
        int  21h
        ret
showitems endp

closefile proc near

        mov  ah,42h
        mov  al,00
        mov  bx,handle
        mov  cx,0
        mov  dx,0
        int  21h
        lea  dx,filebuf
        mov  bx,handle
        mov  cx,251*2+250*50            
        mov  ah,40h
        int  21h
        mov  ah,3eh
        int  21h
        call exitpro
 ret
closefile endp


buildframe proc near

        mov  al,1
        mov  ch,0
        mov  cl,0
        mov  dh,0
        mov  dl,79
        mov  bh,titcolor       ;here is color value
        int  10h

        mov  al,22
        mov  ch,1
        mov  cl,0
        mov  dh,22
        mov  dl,42
        mov  bh,namcolor       ;here is color value
        int  10h
        mov  cl,43
        mov  dl,79
        mov  bh,phcolor
        int  10h

        mov  al,1
        mov  ch,23
        mov  cl,0
        mov  dh,23
        mov  dl,79
        mov  bh,ibcolor       ;here is color value
        int  10h

        mov  al,1
        mov  ch,24
        mov  cl,0
        mov  dh,24
        mov  dl,79
        mov  bh,cmdlcolor       ;here is color value
        int  10h

        mov  dh,0
        mov  dl,0
        call gotoxy
        mov  ah,9
        lea  dx,titstr1
        int  21h
        mov  dh,0
        mov  dl,43
        call gotoxy
        lea  dx,titstr2
        int  21h

 

 

        ret
buildframe endp

scrollscr  proc near
        push ax
        push bx
        push cx
        push dx
        mov  ah,6
        mov  al,1
        mov  ch,1
        mov  cl,0
        mov  dh,22
        mov  dl,42
        mov  bh,namcolor       ;here is color value
        int  10h
        mov  cl,43
        mov  dl,79
        mov  bh,phcolor
        int  10h
        pop  dx
        pop  cx
        pop  bx
        pop  ax
        mov  showin,21
        ret
scrollscr  endp


codeseg ends
        end main

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -