Macro avec parametre

cs_mat74 Messages postés 241 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 16 juin 2010 - 20 juil. 2004 à 16:00
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 - 22 juil. 2004 à 14:52
salut a ts ,

voila j'essaie de créer une fonction , un macro en fait qui permetrait d'afficher le msg passer en parametre j'ai fait qqs essaies et sa marche a la compilation , mais qd je lance le prog sa m'ecrit plein de caractere speciaux a l'ecran ( dos ) et pas du tt le texte mis en param .

voila le macro ( je le place au tt debut du prog ) :

ecrit_texte macro text?

push ax dx

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

pop dx ax

texte db text?

endm

et pr l'appeler je tape :

ecrit_texte 'salut'


si qq1 a une idée ....

merci d'avance
@+

8 réponses

cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
21 juil. 2004 à 14:11
salut,

en fait, je suppose que tu a compilé en ".exe" et pas en ".com", ce qui fait que ton segment cs est différent de ton segment ds.

pour que ta macro fonctionne 2 possibilitées:
1- tu dois compiler de la sorte que cs=ds=es=ss
2 - tu dois mettre text dans le segment data
mtest MACRO text?
.data
text db text?
.code
lea dx,[text]
...
ENDM

@++
0
cs_mat74 Messages postés 241 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 16 juin 2010
21 juil. 2004 à 23:00
merci je viens d'essayer sa marche nickel
0
cs_mat74 Messages postés 241 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 16 juin 2010
22 juil. 2004 à 00:21
j'ai encore un pb , le macro marche , mais si je l'appel plusuieur fois il me dis que ma variable est definie plusieur fois , comment je peux faire ? j'ai essayer local texte juste av la definition de la variable mais sa me met une erreur de plus .
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
22 juil. 2004 à 09:43
re,

le principe est de creer un label local a la macro et donc reutilisable.

DECLARETXT MACRO text?
LOCAL text

.data
text db text?

.code
...

ENDM

@++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_mat74 Messages postés 241 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 16 juin 2010
22 juil. 2004 à 11:33
j'ai essayer de mettre local texte ds le macro , et sa marche pas il me met 'symbol already different kind : texte'
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
22 juil. 2004 à 12:08
re,

essai d'utiliser par exemple "__texte" ou "_@texte" ou un truc qui ressemble pas a une commande de preprocesseur.

@++
0
cs_mat74 Messages postés 241 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 16 juin 2010
22 juil. 2004 à 14:22
j'ai changer le nom de ma variable , jen ai essayer plusieur mais sa ne change strictement rien , il me met tjs la meme erreur .
comment faire ?
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
22 juil. 2004 à 14:52
re,

.386
.model flat,stdcall
option casemap:none

include \inc\windows.inc
include \inc\kernel32.inc
include \inc\user32.inc

includelib \lib\kernel32.lib
includelib \lib\user32.lib

COUTTXT MACRO thetxt
LOCAL @thetxt

.data
@thetxt db thetxt
db '$',0

.code
lea dx,[@thetxt]
mov ax,0900h
int 21h
ENDM

.code
start:
COUTTXT "hello "
COUTTXT "world !!!"
invoke ExitProcess,0

end start

j'ai testé, ca compile sans probleme

@++
0
Rejoignez-nous