Dans un programme, vous avez sûrement constaté qu'il faut parfois écrire quelques lignes de code identiques, dans la majorité des cas une ou plusieurs valeurs changent.
En plus d'augmenter considérablement le programme source (.asm) il est fastidieux de faire un travail aussi répétitif.
Nous allons donc écrire une fois les lignes qui nous intéresse en faisant apparaître la notion de paramètre. Par la suite nous appellerons la macro autant de fois que nécéssaire en lui soumettant un ou plusieurs paramètres. Le premier sera nommé \1, le second sera nommé \2 et ainsi de suite...
Notez que les paramètres n'ont pas d'ordre d'apparition défini dans la macro et peuvent même être utilisés plusieurs fois si besoins.
De plus, je ne pense pas que ce cas soit très fréquent mais vous pouvez tout à fait créer une macro sans paramètre.
A chaque appel de la macro dans notre programme, l'assembleur remplacera son nom par les lignes la composant avec les paramètres donnés, par conséquent nous augmentons la taille de notre programme à chaque fois.
Ceci met en avant un problème évitable, en effet si vous décidez d'utiliser plusieurs fois une même macro et qu'elle contient un label, celui-ci sera recopié à chaque fois et l'assembleur vous signalera qu'il est interdit d'utiliser un même label plus d'une fois.
Intervient alors la notion de label local, vous le définissez juste en ajoutant un \ avant le nom du label initial, dès lors l'assembleur réalisera son travail sans erreur.
Les paramètres peuvent être placés n'importe où, vous êtes totalement libre de votre choix.
Ainsi vous pouvez vous servir d'un paramètre pour 'créer' une instruction, si vous écrivez B\1 vous pouvez par la suite mettre comme paramètre CHG, CLR, SET ou TST pour obtenir BCHG, BCLR, BSET ou BTST !
Pour définir une macro, vous devez lui donner un nom puis mettre le mot clé MACRO.
Ensuite vous tapez les instructions avec les paramètres.
Enfin vous devez terminer votre macro avec le mot-clé ENDM.
(Vous pouvez utiliser indifféremment des minuscules ou des majuscules)
En conclusion, une macro ne sert ni plus ni moins qu'à gagner du temps et de la place dans le programme source, ce qui est très appréciable.