File compilato + sorgente qui: Mdir.zip
;Questo programma ha le stesse funzioni del dir del DoS, ovvero visualizza i file
;presente in una cartella datagli.
.model small
.stack
.data
msg1 db 10,13,"I file della dir sono: ",13,10,13,10,"$"
msg2 db "Sono stati trovati $"
msg3 db " files. $"
msg4 db "Immettere la cartella in cui cercare ",13,10,"$"
msg5 db "Non sono stati trovati file ",13,10,"$"
dta db 43 dup (0)
dir db 100 DUP (0)
cont db 0
cifre db 0
.code
acapo macro
mov ah, 2
mov dl, 13
int 21h
mov ah, 2
mov dl, 10
int 21h
endm
mov ax, @data
mov ds, ax
mov dl, [es:80h]
cmp dl, 0
je error
xor si, si
acquisisci: mov dl, [es:82h+si]
cmp dl, 13
je ok
mov dir[si], dl
inc si
jmp acquisisci
error: lea dx, msg4
mov ah, 9
int 21h
jmp fine
ok: mov ah, 1ah
lea dx, dta
int 21h
mov ah, 4eh
lea dx, dir
mov cx, 3fh
int 21h
jc supporto
lea dx, msg1
mov ah, 9
int 21h
ciclo: inc cont
lea si, [dta+30]
mov cx, 13
mov ah, 0eh
char: lodsb
int 10h
loop char
acapo
mov ah, 4fh
int 21h
jnc ciclo
cmp cont, 0
jne trovati
supporto: lea dx, msg5
mov ah, 9
int 21h
jmp fine
trovati: lea dx, msg2
mov ah, 9
int 21h
cmp cont, 9
jg magg
mov dl, cont
add dl, 30h
mov ah, 2
int 21h
jmp lolz
magg: mov al, cont
xor ah, ah
mov bl, 10
div bl
mov cont, al
mov bl, ah
mov bh, 0
push bx
inc cifre
cmp cont, 0
jne magg
mov cl, cifre
stampa: pop dx
add dl, 30h
mov ah, 2
int 21h
loop stampa
lolz: lea dx, msg3
mov ah, 9
int 21h
fine: mov ah, 4ch
int 21h
end |