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
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
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
Et pour un programme win32 ?
[ Isis ]
La fonction GetCommandLine renvoie un pointeur vers une chaîne contenant toute la ligne de commande (et donc les arguments).Et pour un programme win32 ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager