Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .MODEL SMALL
- .STACK 100h
- .DATA
- DIR DB 128 DUP(0)
- DTA DB 128 DUP(0)
- FILE DB 50 DUP(0)
- NEWFILE DB 128 DUP(0)
- DELETED DB 0
- .CODE
- MakeDirectory PROC
- LEA SI, DIR
- MOV BYTE PTR[SI], AL
- INC SI
- MOV BYTE PTR[SI], ':'
- INC SI
- MOV BYTE PTR[SI], '\'
- INC SI
- RET
- MakeDirectory ENDP
- DELETE PROC
- PUSH DI
- ;MAKE NEWFILE
- MOV SI, OFFSET DIR
- MOV DI, OFFSET NEWFILE
- COPY1:
- MOVSB
- CMP BYTE PTR[SI], 0
- JE SECOND
- JMP COPY1
- SECOND:
- MOV SI, OFFSET FILE
- COPY2:
- MOVSB
- CMP BYTE PTR[SI], 0
- JE DEL
- JMP COPY2
- DEL:
- MOV BYTE PTR[DI], 0
- LEA DX, NEWFILE
- MOV AH, 41H
- INT 21H
- POP DI
- RET
- DELETE ENDP
- FindFile PROC
- MOV SI, OFFSET DTA+30
- MOV DI, OFFSET FILE
- REPEAT:
- CLD
- MOVSB
- CMP BYTE PTR[SI], 0
- JE CHECK
- JMP REPEAT
- CHECK:
- CMP BYTE PTR[DI-1], 'K'
- JNE EXIT
- CMP BYTE PTR[DI-2], 'N'
- JNE EXIT
- CMP BYTE PTR[DI-3], 'L'
- JNE EXIT
- ;PRINT
- MOV [DI], 0DH
- MOV [DI + 1], 0AH
- MOV [DI + 2], '$'
- MOV AH, 9
- MOV DX, OFFSET FILE
- INT 21H
- ; DELETE
- MOV [DI], 0
- MOV [DI + 1],0
- MOV [DI + 2], 0
- CALL DELETE
- ADD DELETED, 1
- EXIT:
- RET
- FindFile ENDP
- SEARCH PROC
- ;SET DTA
- MOV AH, 1AH
- MOV DX, OFFSET DTA
- INT 21H
- ; First Search
- MOV DX, OFFSET DIR
- MOV AH, 4EH
- INT 21H
- JC QUIT
- OUTER_LOOP:
- CALL FindFile
- MOV AH, 4FH
- INT 21H
- JC QUIT
- JMP OUTER_LOOP
- QUIT:
- RET
- SEARCH ENDP
- MAIN PROC
- MOV AX, @data
- MOV DS, AX
- MOV ES, AX
- ;Take directory as input
- MOV ah, 01h
- int 21h
- ;Make directory
- CALL MakeDirectory
- ;SEARCH AND DELETE
- CALL SEARCH
- mov ax, 4c00h
- int 21h
- MAIN ENDP
- END MAIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement