Affichier le contenu d'un repertoir

Contenu du snippet

ce code illustre la procedure de recherche de fichiers dans un repertoire, il est en quelque sorte equivalant a la command "DIR" du DOS
je n'ai pas affichier tous les detailles consernant les fichiers(date,taille..)

le code a eté compilé est testé

je ne dit pas que ce code est le parfait example car je l'ai ecrit sans le raffine

Source / Exemple :


DONNE SEGMENT
MESSAGE     DB "ENTREZ LE NOM DU REPERTOIRE A LISTER",10,13,'$'
REPERTOIRE  DB "LES FICHIER CONTENU DANS ( $"
SUIT        DB "  )SONT",10,13,'$'
RETOURE     DB  10,13,'$'
BUFFER      DB   13 DUP(?),'$'   
EXTANTION   DB   256 dup(?)
DTA         DB   43 DUP(?)
ESPACE      DB   "   $"
DONNE ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DONNE

DEBUT:
   MOV  AX,DONNE
   MOV  DS,AX
   
   MOV    AH,9
   LEA    DX,MESSAGE
   INT    21H
LIRE:               ;boucle pour lire la chaine entrer
   MOV  AH,01H      ;fct 01h (lire un caractaire et mettre sont code dans AL)
   INT  21H
   CMP  AL,13       ;si c'est "entrer" on quite la boucle
   JE   AFFICHAGE
   MOV  EXTANTION[SI],AL
   INC  SI
   JMP  LIRE
AFFICHAGE:
   MOV  EXTANTION[SI],0
   MOV  AH,9
   mov  dx,offset RETOURE 
   INT  21H

   MOV    AH,1AH            ;on deplace la DTA(UNE ZONE QUI CONTIENT LES INFORMATION SUR LE FICHIER)
   MOV    DX,OFFSET DTA
   INT    21H   

   MOV    AH,4EH            ;ON CHERCHE LE FICHIER FCT 4EH
   MOV    DX,OFFSET EXTANTION  ;L'OFFSET DU BUFFER QUI CONTIENT LE NOM DU FICHIER
   XOR    CX,CX
   INT    21H

   push   ds
   pop    es
   CLD
   mov    CX,0
   
LECTURE:
   JC      FIN          
   MOV     SI,OFFSET DTA
   ADD     SI,1EH         ;A L'@ 1EH DE LA DTA SE TROUVE LE NOM DU FICHIER TROUVER	
   MOV     DI,OFFSET BUFFER
   PUSH    CX
COPIE:
   MOV  CX,1   
   lodsb
   stosb
   MOV     AH,9   ; definie la couleur des caractaire (14=jaune)
   MOV     BL,14
   int     10H
   MOV     DL,AL
   MOV     AH,2   ;fct n°2 sortie d'un caractaire 
   int     21h
   OR      AL,AL
   JNZ     COPIE
   pop     cx
   INC     CX
   CMP     CX,4   ;SI ON A ECRIT 4 NOM DE FICHIER SUR UN LINE ON PASSE A LA LINE SUIVANTE
   je      line
   MOV     AH,9
   LEA     DX,ESPACE
   INT     21H
   jmp     suivant

line:
   mov     ah,9
   lea     dx,retoure
   int     21h
   mov     CX,0

suivant:
   MOV     AH,4FH  ;ON CHERCHE LE FICHIER SUIVANT QUI A LES MEME (ATTRIBUE)
   INT     21H
   JMP     LECTURE

FIN:
   MOV     AH,9
   MOV     BL,15 ;couleur blanche
   int     10H
   mov     ah,4ch ;et on quitte le programme
   int     21h
CODE  ENDS
END    DEBUT

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.