📄 aa.asm
字号:
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 + -