AVANTAGE : la taille
La rapidité d'un sous programme est inférieure à celle d'une macro car nous effectuons un saut vers celui-ci puis nous en effectuons un autre pour revenir ou n'en étions.
Une macro est 'simplement' du code recopié avec des paramètres, donc c'est directement l'instruction suivante qui est executée.
DESAVANTAGE : la vitesse
Comme je vous l'ai déjà fait remarqué, l'appel à une macro est remplacé par le contenu de celle-ci, par conséquent vous ne réduisez pas la taille de votre programme final (.92p).
L'énorme point fort des sous-programmes, c'est de nous faire gagner la place.
Si votre but principal était d'utiliser d'une manière simple des paramètres, tournez vous vers l'élaboration de macros.
CAS PARTICULIER : aucun paramètre
Paramètre ne veut pas forcément dire macro, en effet nous pouvons nous servir de la pile pour transmettre des paramètres.
Attention toutefois, vous devrez être très scrupuleux lors de l'utilisation de celle-ci car elle est aussi utilisée lors du saut vers le sous-programme pour contenir l'adresse du retour. En cas d'erreur vous avez toutes les chances pour assister à un plantage (ILLEGAL INSTRUCTION, ADDRESS ERROR).
Avant de sauter à votre sous-programme, vous pouvez enregistrer sur la pile des paramètres avec le mode d'adressage -(An), ici avec le registre A7.
Ensuite vous sautez à votre sous programme, là l'instruction BSR dépose sur la pile l'adresse du retour, il faut absolument la désempiler pour la sauvegarder quelques part (pourquoi pas dans une variable).
Maintenant que le pointeur de pile pointe sur le dernier paramètres que nous avons rentré, vous devez sortir tous les paramètres dans l'ordre inverse comme il est de coutume, encore une fois soyez attentionné sur la taille et le nombre de valeurs que vous déposez et sortez de la pile, tout ce qui a été déposé devra être sorti !
Enfin, il vous faut absolument déposer sur la pile l'adresse de retour sauvegardée précédemment pour retournez à votre programme avec le mnémonique RTS.