📄 05312020.asm
字号:
;********************************************************************
;zdg_work
;telephone number
;********************************************************************
.model small
;--------------------------------------------------------------------
.data
kbups equ 48h
kbdowns equ 50h
kbenter equ 1ch
MANUWIDE equ 48
DISPLAYWIDE equ 36
highness db 5
dishigh db 6
selection db 7
recdnum db ? ;the number of records
count dw ?
inputflag db 0
inputcur db 6
chflag db ?
endaddr dw ? ;end of records
pathnm db 'D:\phnum.txt',0h
handle dw ?
names db 15,0,15 dup(' '),'$'
phnumber db 15,0,15 dup(' '),'$'
exchag db 30 dup(' ')
records db 34 dup(15 dup(' '),15 dup(' '),)
mess1 db 'WELCOME!','$'
mess2 db 'Use the ARROW (',18h,' and ',19h,') key to make the selection, then press ENTER ','$'
mess3 db 'Main Menu','$'
mess4 db 'New name :','$'
mess5 db 'Use a blank record to finish ','$'
mess6 db 'New phone number :','$'
mess7 db 'Press any key to continue. . .','$'
mess8 db 'Please input tne name or tne phone number','$'
mess9 db 'Name :','$'
mess10 db 'Phone number :','$'
mess11 db 'delete','$'
mess12 db 'modify','$'
mess13 db 'search','$'
mess14 db 'Name Phone number','$'
mess15 db 'you want to','$'
mess16 db 15 dup(' ')
select1 db ' 1.Display all the records','$'
select2 db ' 2.Add new record','$'
select3 db ' 3.Delete record','$'
select4 db ' 4.Modify record','$'
select5 db ' 5.Search record','$'
select6 db ' 6.Exit','$'
;--------------------------------------------------------------------
.stack 100
;--------------------------------------------------------------------
.code
;--------------------------------------------------------------------
;main
begain proc far
call tsr
mov ax,@data
mov ds,ax
mov es,ax
call readfile
star:
call closecur
mov highness,5
call clscreen
mov dh,01 ;display mess1
mov dl,33
mov ah,02
mov bh,0
int 10h
lea dx,mess1
mov ah,09
int 21h
mov dh,2 ;display '*'
mov dl,12
mov ah,02
mov bh,0
int 10h
mov al,'*'
mov bh,0
mov bl,3fh
mov cx,MANUWIDE+2
mov ah,09
int 10h
mov dh,3 ;display mess3
mov dl,32
mov ah,02
mov bh,0
int 10h
lea dx,mess3
mov ah,09
int 21h
mov dh,4 ;display four sides
mov dl,12
mov ah,02
mov bh,0
int 10h
mov al,0d5h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,4
mov dl,13
mov ah,02
mov bh,0
int 10h
mov al,0cdh
mov bh,0
mov bl,3fh
mov cx,MANUWIDE
mov ah,09
int 10h
mov dh,4
mov dl,13+MANUWIDE
mov ah,02
mov bh,0
int 10h
mov al,0b8h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
drawb3:
mov dh,highness
mov dl,12
mov ah,02
mov bh,0
int 10h
mov al,0b3h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,highness
mov dl,3dh
mov ah,02
mov bh,0
int 10h
mov al,0b3h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
add highness,1
cmp highness,23
jnz drawb3
mov dh,23
mov dl,12
mov ah,02
mov bh,0
int 10h
mov al,0d4h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,23
mov dl,13
mov ah,02
mov bh,0
int 10h
mov al,0cdh
mov bh,0
mov bl,3fh
mov cx,MANUWIDE
mov ah,09
int 10h
mov dh,23
mov dl,13+MANUWIDE
mov ah,02
mov bh,0
int 10h
mov al,0beh
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,24 ;displaymess2
mov dl,7
mov ah,02
mov bh,0
int 10h
lea dx,mess2
mov ah,09
int 21h
dwselection:
mov ch,selection
mov dh,ch
mov ax,0600h
mov bh,4ah
mov cl,0eh
mov dl,3bh
int 10h
mov highness,7 ;display selections
lea dx,select6
push dx
lea dx,select5
push dx
lea dx,select4
push dx
lea dx,select3
push dx
lea dx,select2
push dx
lea dx,select1
push dx
displaymess:
mov dh,highness
mov dl,22
mov ah,02
mov bh,0
int 10h
pop dx
mov ah,09
int 21h
add highness,2
cmp highness,19
jnz displaymess
searchkb:
mov ah,0
int 16h
cmp ah,kbups
jnz cmpdowns
mov ch,selection
mov dh,ch
mov ax,0600h
mov bh,3fh
mov cl,0eh
mov dl,3bh
int 10h
sub selection,2
cmp selection,7
jns calldw1
mov selection,17
calldw1:
jmp dwselection
cmpdowns:
cmp ah,kbdowns
jnz search_enter
mov ch,selection
mov dh,ch
mov ax,0600h
mov bh,3fh
mov cl,0eh
mov dl,3bh
int 10h
add selection,2
cmp selection,19
jb calldw2
mov selection,7
calldw2:
jmp dwselection
search_enter:
cmp ah,kbenter
jnz searchkb
cmp selection,7 ;check the selection
jnz selection2
call display
jmp star
selection2:
cmp selection,9
jnz selection3
call input
jmp star
selection3:
cmp selection,11
jnz selection4
call delete
jmp star
selection4:
cmp selection,13
jnz selection5
call modify
jmp star
selection5:
cmp selection,15
jnz selection6
call search
jmp star
selection6:
cmp selection,17
call closefile
call finish
exit:
mov ax,4c00h
int 21h
begain endp
;--------------------------------------------------------------------
;create disk file
createfile proc near
mov ah,3ch
lea dx,pathnm
mov cx,0
int 21h
;jc error1
mov handle,ax
ret
error1:
createfile endp
;--------------------------------------------------------------------
;read disk file
readfile proc near
mov ah,3dh ;open file
mov al,2
lea dx,pathnm
int 21h
jc error2
mov handle,ax
mov ah,3fh ;readfile
mov bx,handle
mov cx,1020
lea dx,records
int 21h
cmp ax,0
mov count,ax
mov bl,30
div bl
mov recdnum,al
ret
error2: call createfile
mov count,0
mov recdnum,0
ret
readfile endp
;--------------------------------------------------------------------
;close disk file
closefile proc near
mov ah,3eh
mov bx,handle
int 21h
ret
error3:
closefile endp
;--------------------------------------------------------------------
;display all the records
display proc near
call clscreen
dwcolor:
mov ch,dishigh
mov dh,ch
mov ax,0600h
mov bh,4ah
mov cl,3h
mov dl,12h
int 10h
mov ch,dishigh
mov dh,ch
mov ax,0600h
mov bh,4ah
mov cl,13h
mov dl,25h
int 10h
add dishigh,2
cmp dishigh,24
jnz dwcolor
mov dishigh,6
mov dh,3 ;display four sides
mov dl,2
mov ah,02
mov bh,0
int 10h
mov al,0d5h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,3
mov dl,3
mov ah,02
mov bh,0
int 10h
mov al,0cdh
mov bh,0
mov bl,3fh
mov cx,DISPLAYWIDE
mov ah,09
int 10h
mov dh,3
mov dl,2+DISPLAYWIDE
mov ah,02
mov bh,0
int 10h
mov al,0b8h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,4 ;displaymess14
mov dl,3
mov ah,02
mov bh,0
int 10h
lea dx,mess14
mov ah,09
int 21h
mov dh,4
mov dl,2
mov ah,02
mov bh,0
int 10h
mov al,0b3h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,5
mov dl,2
mov ah,02
mov bh,0
int 10h
mov al,0c3h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,4
mov dl,19
mov ah,02
mov bh,0
int 10h
mov al,0b3h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,4
mov dl,2+DISPLAYWIDE
mov ah,02
mov bh,0
int 10h
mov al,0b3h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,5
mov dl,2+DISPLAYWIDE
mov ah,02
mov bh,0
int 10h
mov al,0b4h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,5
mov dl,3
mov ah,02
mov bh,0
int 10h
mov al,0c4h
mov bh,0
mov bl,3fh
mov cx,DISPLAYWIDE-1
mov ah,09
int 10h
mov dh,3
mov dl,19
mov ah,02
mov bh,0
int 10h
mov al,0d1h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,5
mov dl,19
mov ah,02
mov bh,0
int 10h
mov al,0c5h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
drawb3_:
mov dh,dishigh
mov dl,2
mov ah,02
mov bh,0
int 10h
mov al,0b3h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,dishigh
mov dl,19
mov ah,02
mov bh,0
int 10h
mov al,0b3h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,dishigh
mov dl,2+DISPLAYWIDE
mov ah,02
mov bh,0
int 10h
mov al,0b3h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
add dishigh,1
cmp dishigh,23
jnz drawb3_
mov dishigh,6
mov dh,23
mov dl,2
mov ah,02
mov bh,0
int 10h
mov al,0d4h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,23
mov dl,3
mov ah,02
mov bh,0
int 10h
mov al,0cdh
mov bh,0
mov bl,3fh
mov cx,DISPLAYWIDE
mov ah,09
int 10h
mov dh,23
mov dl,19
mov ah,02
mov bh,0
int 10h
mov al,0cfh
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,23
mov dl,2+DISPLAYWIDE
mov ah,02
mov bh,0
int 10h
mov al,0beh
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
dwcolor2:
mov ch,dishigh
mov dh,ch
mov ax,0600h
mov bh,4ah
mov cl,2ah
mov dl,39h
int 10h
mov ch,dishigh
mov dh,ch
mov ax,0600h
mov bh,4ah
mov cl,3ah
mov dl,4ch
int 10h
add dishigh,2
cmp dishigh,24
jnz dwcolor2
mov dishigh,6
mov dh,3 ;display four sides
mov dl,41
mov ah,02
mov bh,0
int 10h
mov al,0d5h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,3
mov dl,42
mov ah,02
mov bh,0
int 10h
mov al,0cdh
mov bh,0
mov bl,3fh
mov cx,DISPLAYWIDE
mov ah,09
int 10h
mov dh,3
mov dl,41+DISPLAYWIDE
mov ah,02
mov bh,0
int 10h
mov al,0b8h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,4 ;displaymess14
mov dl,42
mov ah,02
mov bh,0
int 10h
lea dx,mess14
mov ah,09
int 21h
mov dh,4
mov dl,41
mov ah,02
mov bh,0
int 10h
mov al,0b3h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,5
mov dl,41
mov ah,02
mov bh,0
int 10h
mov al,0c3h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,4
mov dl,57
mov ah,02
mov bh,0
int 10h
mov al,0b3h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,4
mov dl,41+DISPLAYWIDE
mov ah,02
mov bh,0
int 10h
mov al,0b3h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,5
mov dl,41+DISPLAYWIDE
mov ah,02
mov bh,0
int 10h
mov al,0b4h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,5
mov dl,42
mov ah,02
mov bh,0
int 10h
mov al,0c4h
mov bh,0
mov bl,3fh
mov cx,DISPLAYWIDE-1
mov ah,09
int 10h
mov dh,3
mov dl,57
mov ah,02
mov bh,0
int 10h
mov al,0d1h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,5
mov dl,57
mov ah,02
mov bh,0
int 10h
mov al,0c5h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
drawb3_2:
mov dh,dishigh
mov dl,41
mov ah,02
mov bh,0
int 10h
mov al,0b3h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,dishigh
mov dl,57
mov ah,02
mov bh,0
int 10h
mov al,0b3h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,dishigh
mov dl,41+DISPLAYWIDE
mov ah,02
mov bh,0
int 10h
mov al,0b3h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
add dishigh,1
cmp dishigh,23
jnz drawb3_2
mov dishigh,6
mov dh,23
mov dl,41
mov ah,02
mov bh,0
int 10h
mov al,0d4h
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,23
mov dl,42
mov ah,02
mov bh,0
int 10h
mov al,0cdh
mov bh,0
mov bl,3fh
mov cx,DISPLAYWIDE
mov ah,09
int 10h
mov dh,23
mov dl,57
mov ah,02
mov bh,0
int 10h
mov al,0cfh
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,23
mov dl,41+DISPLAYWIDE
mov ah,02
mov bh,0
int 10h
mov al,0beh
mov bh,0
mov bl,3fh
mov cx,1
mov ah,09
int 10h
mov dh,24 ;displaymess7
mov dl,24
mov ah,02
mov bh,0
int 10h
lea dx,mess7
mov ah,09
int 21h
push si
push di
mov al,recdnum
push ax
lea si,records
disrecords:
lea di,names+2
sub ch,ch
mov cl,15
rep movsb
mov dh,dishigh
mov dl,3
mov ah,02
mov bh,0
int 10h
lea dx,names+2
mov ah,09
int 21h
lea di,phnumber+2
sub ch,ch
mov cl,15
rep movsb
mov dh,dishigh
mov dl,20
mov ah,02
mov bh,0
int 10h
lea dx,phnumber+2
mov ah,09
int 21h
lea di,names+2
sub ch,ch
mov cl,15
rep movsb
mov dh,dishigh
mov dl,42
mov ah,02
mov bh,0
int 10h
lea dx,names+2
mov ah,09
int 21h
lea di,phnumber+2
sub ch,ch
mov cl,15
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -