?? window.asm
字號:
extrn list:far
extrn insert:far
extrn delete:far
extrn search:far
;;clear
clr macro
push ax
push bx
push cx
push dx
mov ax,0600h
mov cx,0
mov dx,184fh
mov bh,9Eh
int 10h
pop dx
pop cx
pop bx
pop ax
endm
;;;scrooll
scrl macro lrow,lcol,rrow,rcol,color
push ax
push bx
push cx
push dx
mov ah,6
mov al,0
mov cl,lcol
mov ch,lrow
mov dh,rrow
mov dl,rcol
mov bh,color
int 10h
pop dx
pop cx
pop bx
pop ax
endm
;;she zhi shu biao
setcur macro row,col
push ax
push bx
push cx
push dx
mov ch,5
mov cl,7
mov ah,1
int 10h
mov dh,row
mov dl,col
mov bh,0
mov ah,2
int 10h
pop dx
pop cx
pop bx
pop ax
endm
display macro string
push dx
lea dx,string
mov ah,09
int 21h
pop dx
endm
pushxy macro
push ax
push bx
push cx
push dx
push di
push si
push bp
endm
popxy macro
pop bp
pop si
pop di
pop dx
pop cx
pop bx
pop ax
endm
DISALL MACRO
PUSH AX
PUSH BX
PUSH CX
PUSH DX
SETCUR 6,34
DISPLAY MS1
SETCUR 8,34
DISPLAY MS2
SETCUR 10,34
DISPLAY MS3
SETCUR 12,34
DISPLAY MS4
SETCUR 14,34
DISPLAY MS5
SETCUR 16,34
DISPLAY MS6
POP DX
POP CX
POP BX
POP AX
ENDM
stack segment para stack 'stack'
dw 280 dup(?)
stack ends
data segment para 'data'
string1 db 'ANHUI UNIVERSITY OF SCIENCE AND TECHNOLOGY',0ah,0dh,'$'
string2 db ' '
TM DB 2 DUP(?)
DB ':'
DB 2 DUP(?)
DB ':'
DB 2 DUP(?),'$'
ms1 db '1. ADD ',0AH,0DH,'$'
MS2 DB '2. DELET ',0AH,0DH,'$'
MS3 DB '3. SEARCH ',0AH,0DH,'$'
MS4 DB '4. LISTALL ',0AH,0DH,'$'
MS5 DB '5. PASSWORD',0AH,0DH,'$'
MS6 DB '6. QUIT ',0AH,0DH,'$'
CUR DB ?
CUR2 DB ?
CUR1 DB ?
prompt db 'Enter Password:',13,10,'$'
pass label byte
maxlen db 8
namelen db ?
password db 9 dUP(?),13,10,'$'
third db ?
fcbrec label byte
fcbdriv db 0
fcbname db 'password'
fcbext db 'txt'
fcbblk dw 0
fcbrcsz dw ?
dd ?
dw ?
dt ?
fcbsqrc db 0
dd ?
reclen equ 9
pwordfld db reclen dup(?),13,10,'$'
wordfld db 9 dup(?)
endcde db 0
openmsg db '* * * open error * * *','$'
readmsg db '* * * read error * * *','$'
msgpass db 'Input new password:$'
writemsg db 'write error!$'
creatmsg db 'creat error!$'
DATA ENDS
code segment para 'code'
assume cs:code,ds:data,es:data,ss:stack
main proc far
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
mov es,ax
mov ax,stack
mov ss,ax
mov third,0
call openf
cmp endcde,0
jnz jieshu
call readf
cmp endcde,0
jnz jieshu
lea dx,pwordfld
mov ah,09
int 21h
jmp ipa
jieshu:jmp _a
ipa: scrl 0,0,24,79,07h
setcur 12,20
cmp third,3
je shu
inc third
jmp chu
shu: ret
chu:
lea dx,prompt
mov ah,09h
int 21h
setcur 12,35
push si
push cx
mov si,0
mov cx,8
con:
mov ah,07h
int 21h
mov password[si],al
mov ah,02
mov dl,'*'
int 21h
inc si
loop con
pop cx
pop si
mov cx,8
lea di,password
lea si,pwordfld
cld
rep cmpsb
jne a
jmp _a
a:jmp ipa
_a:MOV AL,1CH
MOV AH,35H
INT 21H
PUSH ES
PUSH BX
PUSH DS
MOV DX,OFFSET TIMES
MOV AX,SEG TIMES
MOV DS,AX
MOV AL,1CH
MOV AH,25H
INT 21H
POP DS
STI
menu:
clr
SETCUR 2,19
DISPLAY STRING1
SCRL 6,34,19,50,06H
scrl 5,32,18,48,67h
SCRL 6,34,6,45,8FH
SETCUR 6,34
DISALL
SETCUR 6,34
MOV CUR,6
MOV CUR1,6
GET:
MOV AH,0
INT 16H
cop:CMP AH,01H
JE E
JMP NEQ
E: JMP EXIT
NEQ:
CMP AH,48H
JE UP
CMP AH,50H
JE DOWN
cmp ah,1ch
je ju
jmp _11
ju:jmp judge
_11:
CMP AH,02H
JE N1
CMP AH,03H
JE N2
CMP AH,04H
JE N3
CMP AH,05H
JE N4
CMP AH,06H
JE N5
CMP AH,07H
JE Y
JMP K
Y: JMP EXIT
K: JMP GET
N1:MOV CUR,6
JMP _UPDOWN
N2:MOV CUR,8
JMP _UPDOWN
N3:MOV CUR,10
JMP _UPDOWN
N4:MOV CUR,12
JMP _UPDOWN
N5:MOV CUR,14
JMP _UPDOWN
UP:
CMP CUR,6
JE ND
SUB CUR,2
SUB CUR1,2
JMP _UPDOWN
ND:MOV CUR,16
MOV CUR1,16
JMP _UPDOWN
DOWN:
CMP CUR,16
JE BEGIN1
ADD CUR,2
ADD CUR1,2
JMP _UPDOWN
BEGIN1:
MOV CUR,6
MOV CUR1,6
JMP _UPDOWN
_UPDOWN: scrl 5,32,18,48,67h
SCRL CUR,34,CUR,45,8FH
SETCUR CUR,34
DISALL
SETCUR CUR,34
MOV AH,0
INT 16H
CMP AH,1CH
JE judge
jmp cop
judge:
cmp cur,6
je begin_pro
cmp cur,10
je search_pro
cmp cur,8
je delet_pro
cmp cur,12
je list_pro
cmp cur,14
je pass_pro
cmp cur,16
je it
JMP menu
it:jmp exit
list_pro:
call list
wai:mov ah,7
int 21h
cmp al,' '
jne wai
jmp menu
begin_pro:
call insert
wai1:mov ah,7
int 21h
cmp al,' '
jne wai1
jmp menu
pass_pro:
call trans
jmp Menu
search_pro:
call search
jmp menu
delet_pro:
call delete
wai2:mov ah,7
int 21h
cmp al,' '
jne wai2
jmp menu
_DOWN:
scrl 5,32,18,48,67h
SCRL CUR,34,CUR,45,8FH
SETCUR CUR,34
DISALL
SETCUR CUR,34
MOV AH,0
INT 16H
CMP AH,1CH
JE judge1
JMP cop
judge1:
cmp cur,14
je list_p1r
JMP ccc
list_p1r:
call trans
jmp menu
ccc:
cmp cur,16
je it1
jmp get
it1:jmp exit
EXIT: pop dx
pop ds
MOV AL,1CH
MOV AH,25H
INT 21H
CLR
setcur 0,0
scrl 0,0,24,79,07h
ret
main endp
openf proc near
LEA DX,FCBREC
MOV AH,0FH
INT 21H
cMP AL,00
JNZ ERROR
MOV FCBRCSZ,RECLEN
MOV AH,1aH
LEA DX,PWORDFLD
INT 21H
RET
ERROR:MOV ENDCDE,01
RET
OPENF ENDP
READF PROC NEAR
MOV AH,14H
LEA DX,FCBREC
INT 21H
CMP PWORDFLD,1AH
JNE TESTS
MOV ENDCDE,01
JMP REND
TESTS:
cmp al,3
jz rend
CMP AL,0
JZ REND
CMP AL,1
JnZ REND
MOV ENDCDE,1
; SETCUR 12,35
; LEA DX,READMSG
; MOV AH,09
; INT 21H
REND:
RET
READF ENDP
tRANS PROC NEAR
MOV AH,16H
LEA DX,FCBREC
INT 21H
OR AL,AL
JNE ERR_
scrl 0,0,24,79,07h
setcur 0,0
display msgpass
setcur 0,20
mov bx,0
jmp tran_in
ERR_:
DISPLAY WRITEMSG
call closef
RET
tRAN_IN:
MOV AH,07h
INT 21H
MOV WORDFLD[BX],AL
INC BX
CMP BX,8
Jb TRAN_IN
mov wordfld+8,1ah
mov cx,9
lea di,pwordfld
lea si,wordfld
cld
rep movsb
MOV FCBRCSZ,8
MOV AH,1AH
LEA DX,pWORDFLD
INT 21H
MOV AH,15H
LEA DX,FCBREC
INT 21H
OR AL,AL
JNE ERRR_
call closef
RET
ERRR_:
diSPLAY CREATMSG
call closef
RET
TRANS ENDP
closef proc near
push ax
push dx
mov ah,10h
lea dx,fcbrec
int 21h
pop dx
pop ax
ret
closef endp
TIMES PROC NEAR
iret
PUSH DS
PUSH AX
PUSH CX
PUSH DX
PUSH SI
PUSH BX
MOV AX,DATA
MOV DS,AX
STI
LEA SI,TM
mov ah,2H
int 1ah
; jc b2
mov bx,cx
mov al,bh
mov cl,4
shr al,cl
add al,30h
mov [si],al
mov al,bh
and al,0fh
add al,30h
mov [si+1],al
mov al,bl
shr al,cl
add al,30h
mov [si+3],al
mov al,bl
and al,0dh
add al,30h
mov [si+4],al
mov al,dh
shr al,cl
add al,30h
mov [si+6],al
mov al,dh
and al,0fh
add al,30h
mov [si+7],al
SETCUR 24,68
LEA DX,TM
MOV AH,09H
INT 21H
SETCUR CUR,34
B2: CLI
POP BX
POP SI
POP DX
POP CX
POP AX
POP DS
IRET
TIMES ENDP
code ends
end start
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -