[ASM]manipuler des repertoire

manipuler des repertoire [ASM] - ASM - Programmation

Marsh Posté le 01-04-2004 à 16:17:53    

bonjour,
 
est-ce que quelqu'un serait créer un répertoire, le supprimer, sélectionner le repertoire courant, et afficher le chemin d'acces au repertoire courant en ASSEMBLEUR.
Les quatres programmes doivent etre séparer.
Merci

Reply

Marsh Posté le 01-04-2004 à 16:17:53   

Reply

Marsh Posté le 01-04-2004 à 17:13:28    

c'est pas bien de faire des virus :o


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 01-04-2004 à 17:13:45    

Tu peux poster l'énoncé en entier, steuplé ? :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 01-04-2004 à 17:19:17    

darklord a écrit :

c'est pas bien de faire des virus :o


 
pas du tout.
C'est un exo que j'ai à faire mais je suis vraiment trop nul en asm (malgré que ce qui est demandé soit tres simple).
voici l'énoncé:
 
1.Création d'un repertoire
  Ecrire un programme pour créer un repertoire appelé \temps.
2.Suppression d'un repertoire
  Ecrire un programme pour supprimer le repertoire précedent.
3.Ecrire un programme pour selectionner le repertoire courant.
4.Ecrire un repertoire qui affiche le chemin d'acces au repertoire courant.
 
Voilà.

Reply

Marsh Posté le 01-04-2004 à 17:22:31    

Bingo [:ddr555]
La demande de résolution d'exercices est interdite sur le forum (cf les règles du forum, en haut à droite de la liste des topics). Ton topic va donc bientôt être fermé [:ohello]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 01-04-2004 à 17:23:29    

[:rofl2]

Reply

Marsh Posté le 01-04-2004 à 17:27:00    

ok j'avais pas vu ke c'était interdi de demander un tel chose (résolution d'exercice).
 
Bon alors je vous donne deja un ebauche de ce que j'ai fait mais je comprend pas tout don si on peu me donner des explication.
 
Exo 1:

Code :
  1. data segment
  2.   erreur db 'erreur'
  3.   pathname db "C:\temps",0
  4. data ends
  5. code segment
  6.   assume cs:code,ds: data
  7. debut:
  8.   mov ax,data
  9.   mov ds,ax
  10.   int 21h
  11.   mov ah,39h
  12.   mov dx,offset pathname
  13.   int 21h
  14.   jc afficher_erreur
  15.   mov ah,4ch
  16.   int 21h
  17. afficher_erreur: mov bx,offset erreur
  18.                  mov ah,09h
  19.                  mov dx,bx
  20.                  int 21h
  21.                  mov ah,4ch
  22.                  int 21h
  23. code ends
  24. end debut


 
Exo 2:

Code :
  1. data segment
  2.   erreur db 'erreur'
  3.   pathname db "C:\temps",0
  4. data ends
  5. code segment
  6.   assume cs:code,ds: data
  7. debut:
  8.   mov ax,data
  9.   mov ds,ax
  10.   int 21h
  11.   mov ah,3ah
  12.   mov dx,offset pathname
  13.   int 21h
  14.   jc afficher_erreur
  15.   mov ah,4ch
  16.   int 21h
  17. afficher_erreur: mov bx,offset erreur
  18.                  mov ah,09h
  19.                  mov dx,bx
  20.                  int 21h
  21.                  mov ah,4ch
  22.                  int 21h
  23. code ends
  24. end debut


 
 
A priori ces deux exo marche mais j'ai pas fé expres, et comme je doit donner des explications çà va etre dur de le faire.
 
 
Exo 3:

Code :
  1. data segment
  2.   erreur db 'erreur'
  3.   pathname db "C:\temps",0
  4. data ends
  5. code segment
  6.   assume cs:code,ds: data
  7. debut:
  8.   mov ax,data
  9.   mov ds,ax
  10.   int 21h
  11.   mov ah,3bh
  12.   mov dx,offset pathname
  13.   int 21h
  14.   jc afficher_erreur
  15.   mov ah,4ch
  16.   int 21h
  17. afficher_erreur: mov bx,offset erreur
  18.                  mov ah,09h
  19.                  mov dx,bx
  20.                  int 21h
  21.                  mov ah,4ch
  22.                  int 21h
  23. code ends
  24. end debut


 
le probleme c que je vé juste que dans le repertoire c:temps\
et non dans le repertoire courant(puisque je l'execute d'un autre repertoire le programme). Donc la j'ai besoin d'aide.
 
exo4:
 
J'ai pas fait car je n'y arrive pas


Message édité par Profil supprimé le 01-04-2004 à 17:39:03
Reply

Marsh Posté le 01-04-2004 à 17:32:10    

Serial codeeeeeeeeeeeeeeeer :o

Reply

Marsh Posté le 01-04-2004 à 17:32:53    

DarkLord a écrit :

Serial codeeeeeeeeeeeeeeeer :o


 
???

Reply

Marsh Posté le 01-04-2004 à 17:34:33    


C'est un gars qui connaît bien l'ASM :o Mais il a été banni, j'crois :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 01-04-2004 à 17:34:33   

Reply

Marsh Posté le 01-04-2004 à 17:40:44    

Je crois ke j'ai fait des efforts non??
c'est bien une des conditions pour qu'on puisse me repondre et que l'on ne ferme pas le sujet

Reply

Marsh Posté le 01-04-2004 à 17:53:35    

bin pour les deux premiers exo, y'a pas vraiement grand chose à commenter.
 
tu mets juste des:
 
"je mets l'adresse du chemin dans le registre...."
"appel de la fonction DOS gni gna gna création de répertoire"
"ça marche => on quitte"
"ça marche po (retenue) => message d'erreur"
 
je pense pas que l'on te demande des commentaires vraiment poussés...
 

Reply

Marsh Posté le 01-04-2004 à 17:58:17    

pour l'exo3:
 
tu ne peux pas justifier le changement de répertoire courant.
 
quand tu lances un programmes dans C:\prog
et que le programmes changes en c:\yopla
et puis tu quittes
 
tu restes en c:\prog, puisque c'était le répertoire courant au programme.
(c'est comme les variables d'environnement, tu peux les changer en créer, mais c'est pour la durée de vie du programme).
 
donc l'idée c'est de montrer que tu as trouver tout seul comme un grand la fonction DOS qui permet de le faire.
 
l'idée qui serait bien c'est de faire l'exo4 à part.
puis de réunir l'exo3 et l'exo4 (changement de répertoire courant et affichage du répertoire courant de suite) pour prouver que t'as bon.

Reply

Marsh Posté le 01-04-2004 à 18:00:53    

et de manière générale tu peux réorganiser comme ça:
 

Code :
  1. ...
  2. ...
  3. ...
  4. int 21h
  5. jnc quitte_ok  // pas de retenue pas de problème on quitte sans message d'erreur
  6. quitte_erreur:  mov bx,offset erreur
  7.                 mov ah,09h
  8.                 mov dx,bx
  9.                 int 21h
  10. quitte_ok:
  11.                 mov ah,4ch
  12.                 int 21h

Reply

Marsh Posté le 01-04-2004 à 18:32:04    

bjone>>  merci beaucoup pour tes conseils.
 
Je vais faire ce que tu m'a dit pour les exos 3 et 4

Reply

Marsh Posté le 01-04-2004 à 18:34:42    

fais bien le 4 une fois à part, puis une version 3+4.... (que le prof te fasse pas gnignagna)

Reply

Marsh Posté le 01-04-2004 à 19:43:40    

bjone a écrit :

fais bien le 4 une fois à part, puis une version 3+4.... (que le prof te fasse pas gnignagna)


 
Je voulais savoir pour le 4, il faut bien utiliser la fonction 47h pour afficher le chemin d'acces au repertoire courant.
 
En fait c'est super simple , ya juste un truc a changer a chaques exos: soit c'est 39h pour créer soit c'est 3Ah pour supprimer soit 3Bh pour sélectionner soit 47h pour afficher le chemin.
En fait je pense que le 3 et le 4 font la même chose en soi mais pas de la même maniere ou je me trompe? pour le trois en fait j'ai juste a changer le pathname pour qu'il corresponde au repertoire courant à savoir le repertoire où est le programme.

Reply

Marsh Posté le 01-04-2004 à 19:49:20    

bin le but à priori c'est de faire des appels DOS, donc effectivement y'a pas grand chose qui change.
 
pour le 4 (affichage du chemin actuel), j'ai pas regardé, mais il faut:
a) récupérer le chemin courant => appel dos
b) l'afficher => appel dos
 
alors pour le a) (vu que j'ai pas regardé), si il te balance au retour l'adresse du chemin courant direct, soit tu lui passes d'abord l'adresse d'un tampon ou le chemin sera mis.
 
attention le 3) c'est définir le chemin courant, le 4) c'est le demander (dans le 4) pris seul, il ne doit pas y avoir de chemin visible dans le source à priori)


Message édité par bjone le 01-04-2004 à 19:50:54
Reply

Marsh Posté le 01-04-2004 à 20:20:05    

Ok merci, je pense que c'est bon.
Pour le quatre j'ai declaré comme suit:  

Citation :

data segment
  erreur db 'erreur'
  pathname db 64 dup(0)
data ends


 
et avec la fonction 47h çà lit le repertoire courant en fait et je le stocke dans pathname.
 
Bon j'arrete là, je pense avoir compris l'essentiel.
 
Encore merci


Message édité par Profil supprimé le 01-04-2004 à 20:20:30
Reply

Marsh Posté le 01-04-2004 à 20:22:15    

http://spike.scu.edu.au/~barry/interrupts.html#ah47
 
valà c'est un buffer de 64octets dont l'adresse est passée par DS:SI

Reply

Marsh Posté le 01-04-2004 à 21:08:30    

Taiche a écrit :


C'est un gars qui connaît bien l'ASM :o Mais il a été banni, j'crois :o


Ouais :(
Dommage, il me faisait trop rire :o


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed