Suprimer un fichier en TASM aprés une recherche

infoelectronique Messages postés 2 Date d'inscription dimanche 30 avril 2006 Statut Membre Dernière intervention 22 juillet 2008 - 7 juin 2006 à 19:38
Guilou34 Messages postés 142 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 29 janvier 2016 - 9 juin 2006 à 19:44
salut j'ai fait le programme suivant :

.model small
.stack 100h

.data
massque db "*.txt",0
message_ereure db "fichier est introuvable $"
message_non_ereure db "fichier est trouver $"
.code
debut:
mov ax,@data
mov ds,ax

mov ah,4eh ;chercher le premier fichier
mov dx,offset massque
xor cx,cx
chercher_fichier:

int 21h
jc terminer_recherche

mov ah,41h ; effacer le fichier chercher
mov dx,80h+1eh
int 21h

mov ah,09h
mov dx,offset message_non_ereure
int 21h

mov ah,00h
int 16h

mov ax, 4c00h
int 21h
terminer_recherche :
mov ah,09h
mov dx,offset message_ereure
int 21h

mov ax,00h
int 16h

mov ax, 4c00h
int 21h
end debut

cette programme cherche un fichier et il ne le suprime pas il affiche le message quelle a trouver le fichier dans le dossier courant mai il ne la suprime pas j'ai utilisé la fonction 41h je ne sais pourquoi ?

<!-- / message -->,

----

<!-- BEGIN TEMPLATE: postbit_onlinestatus -->
<!-- END TEMPLATE: postbit_onlinestatus -->
<!-- -->,
<!-- controls -->

1 réponse

Guilou34 Messages postés 142 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 29 janvier 2016 1
9 juin 2006 à 19:44
Salut


Si la  fonction 4eh trouve un fichier avec un mask déterminé elle retourne,  dans le DTA ( Disk transfert area) et  à l'offset 1Eh, le nom de ce fichier sous la forme d ’une chaîne ascii terminée par un 0.




Or pour effacer un  fichier avec la fonction 41h, ds:dx doit pointer sur un nom de fichier terminé par un 0. Les "wild cards"  ne sont pas autorisés.




L’adresse du DTA  est donné par la fonction 2fh  sous la forme ES :BX



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /?>
 




Pour supprimer le premier fichier *.txt,  ton programme peut  s’ écrire comme suit (après la ligne  «  jc terminer recherche » :



 






mov ah,2fh





int 21h ; es:bx   ->   DTA





mov dx,bx





add dx,1eh





push ds





mov ax,es





mov ds,ax      ;ds:dx ->         xyz---.txt,0





mov ah,41h





int    21h





pop ds






 





s’il y a un carry ,ax=5  signifie acces interdit



 




Sauf erreur de frappe!
0
Rejoignez-nous