IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Récupérer les paramètres d'un programme (DOS et Win32)


Sujet :

Assembleur

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Points : 121
    Points
    121
    Par défaut Récupérer les paramètres d'un programme (DOS et Win32)
    Bonjour à tous!

    Voila, je voudrais savoir comment faire pour récupérer les paramètres qui sont passés à mon programme, et aussi comment on fait pour lancer unn programme avec des parametres...

    Merci d'avance pour votre réponse

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Salut,

    Les arguments d'un programme sont situés à l'offset 80h du PSP (Program Segment Prefix).
    Donc déjà tu appelles la fonction 62h de l'int 21h pour récupérer l'adresse du PSP.
    A l'offset 80h tu trouveras déjà le nombre de caractères de tes arguments, et tu boucles à partir de 81h sur ton nb de caractères...

    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    getparam proc
    	;; copy filename from DOS command line to ds:di
    	push ds				; We push ds to save it for the end
    	push ds				; We push ds to swap it to ES
    	pop es				; We pop ES to set it to DS
    	mov ah,62h			; We call the 62h function
    	int 21h				; Of the INT21h to get address of program segment prefix
    	mov ds,bx			; We set ds to the PSP segment
    	mov si,80h			; The command line arguments begin at 80h of the PSP
    	mov cl,[si]			; get character count of cmd line args
    	cmp cl,0
    	je getparam_exit		; exit if no filename
    	inc si				; point at first character
    skipspace:				; We check for spaces to begin to read params
    	mov al,[si]
    	cmp al,20h 			; Is it a space?
    	jne getstring			; No, we begin to read the string
    	inc si				; It's a space, we increment to check following char
    	dec cl				; Number of char to read will be decremented
    	jmp skipspace			; We loop to check other spaces
    getstring:
    	cld				; No more interrupts
    	rep movsb			; We loop on a movsb to read a full string (copies from DS:SI to ES:DI)
    	inc di				; We increment di to set the string terminated char
    	mov BYTE PTR es:[di], 24h	; We set a $ as last char to terminate the string
    getparam_exit:
    	pop ds				; We restore data segment
    	ret				; We exit the getparam function
    getparam endp

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Points : 121
    Points
    121
    Par défaut
    Merci bien pour ton aide

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Et pour un programme win32 ?

    [ Isis ]

  5. #5
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Et pour un programme win32 ?
    La fonction GetCommandLine renvoie un pointeur vers une chaîne contenant toute la ligne de commande (et donc les arguments).

Discussions similaires

  1. [PHP 4.4.2] Récupérer les paramètres d'une fonction
    Par stailer dans le forum Langage
    Réponses: 5
    Dernier message: 07/04/2006, 21h41
  2. Réponses: 3
    Dernier message: 15/03/2006, 03h19
  3. récupérer les paramètres dans une url
    Par asetti dans le forum ASP
    Réponses: 6
    Dernier message: 23/12/2005, 10h08
  4. [C#] - Récupérer les paramètres passés à une application
    Par linuxludo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 14/11/2005, 14h41
  5. [Débutant] Récupérer les paramètres d'une routine
    Par nifty dans le forum Assembleur
    Réponses: 5
    Dernier message: 18/04/2005, 14h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo