CODINGHEBDOGICIEL ★ COURS D'ASSEMBLEUR- HEBDOGICIEL n°85 ★

La page pédagogique d'hebdogiciel : Formation à l'assembleur

En effet, dès que le processeur a descendu les différents appels jusqu'au sous-programme d, il se retrouve obligé de recommencer son parcours vers la routine la plus profonde par l'instruction de la ligne 330 (JSR b). Encore une fois nous allons a rencontre de la logique d'utilisation des sous-programmes. Dans ce cas, tout comme dans celui de la routine qui s'appelle elle-même, nous allons empiler des adresses de retour dans la pile système, jusqu'au blocage définitif de notre micro-ordinateur.

Vous devrez donc programmer avec des pincettes lorsque vous désirerez utiliser les sous-programmes, pratique qui devient rapidement nécessaire dès que les programmes atteignent un certain niveau de complexité. Encore une fois, ce genre d'incidents vous sera épargné si vous pensez à suivre scrupuleusement l'ordre que vous aurez établi vous-même par un organigramme.

Une autre pratique relativement courante de la programmation en langage machine consiste à se servir de la pile système pour stocker des données et des résultats de calculs intermédiaires. Rien ne vous empêche d'utiliser cette méthode ! Mais méfiez-vous des surprises... Créons un nouveau programme, dans lequel nous stockerons des valeurs intermédiaires dans la pile.

10 PAS 1
20 PAS 2
30 JSR a
40 AFFICHAGE DES RESULTATS
50 FIN

Sous-programme a

100 CALCULE
110 STOCKE DANS LA PILE
120 CALCULE
130 RETIRE DE LA PILE
140 RETOUR

Voilà l'exemple le plus simple que nous puissions trouver. Cette opération de stockage est parfaitement fonctionnelle, dans le cas présent. En effet, lorsque le micro - processeur rencontre l'instruction de retour, il n'a dans la pile système que l'adresse de retour (soit 40 dans notre exemple).
Maintenant. conservons le même programme principal et modifions le sous-programme a de telle façon que le stockage ne se passe pas aussi bien que précédemment.

Sous-proqramme a

100 CALCULE
110 STOCKE DANS LA PILE
120 CALCULE
130 STOCKE DANS LA PILE
140 RETOUR

Que se passe-t-il dans ce cas précis ? Représentons la pile système à chacune des étape: franchies par le microprocesseur. Les pas 1 et 2 du pro gramme principal ne touchent pas à la pile, donc aucun lieu de s'en inquiéter. Par contre à la ligne 30 nous trouvons un appel au sous-programme a. Comme nous l'avons étudié plus tôt dans ce cours, lorsque l'ordinateur rencontre un instruction de saut à une routine il place dan; la pile système l'adresse à la quelle il devra reprendre le travail, une fois la routine exécutée.

PILE SYSTEME


Etat de la pile à l'étape 3

Nous nous retrouvons donc dans le sous-programme a. La ligne 100 n'apporte pas de modification de la pile, par contre la ligne 110 indique clairement que l'on stocke le résultat du calcul de la ligne précédente dans la pile.


Etat de la pile à l'étape 5

La séquence précédente se trouve réitérée dans les lignes 120 et 130. Nous aurons donc le contenu de la pile modifié une nouvelle fois.


Etat de la pile à l'étape 7

A ce point du sous-programme a, nous arrivons à l'instruction de retour. Nous allons donc devoir récupérer la valeur de l'adresse de retour dans la pile pour pouvoir continuer le travail. Et c'est là que les ennuis commencent sérieusement ! Au lieu de récupérer l'adresse de retour, le micro-processeur va partir à l'adresse indiquée par le résultat des calculs intermédiaires.

Nous pouvons donc tirer de cette expérience une nouvelle règle à appliquer absolument, lors de l'utilisation des sous-programmes : si l'on utilise la pile pour stocker des données intermédiaires, il est absolument essentiel de les retirer de la pile avant de quitter le sous-programme pour pouvoir revenir sans problème au programme principal. J'espère que l'exemple donné plus haut vous en aura convaincu et qu'il vous aura évité bien des ennuis inutiles.

Je sens que vous commencez à désespérer. Ce qui s'avérait comme une simple étape dans l'acquisition de connaissances en informatique se transforme en un véritable chemin de croix Mais rassurez-vous ! Tout ce qui peut vous paraître inutile dans les conseils que je peux vous distiller au fil de ces cours ne le sera que dans la mesure ou vous ne les appliquerez pas. En effet, rien n'est plus complexe que transmettre une expérience â des personnes innocentes dans un domaine donné. Pour ceux qui ne suivent pas ces remarques, ils auront â faire face aux problèmes que je décris, ou â des questions similaires. Ils se forgeront leur propre expérience et ne seront pas les moins capables au bout du compte, mais que de temps perdu a se pencher sur son écran pour essayer de diagnostiquer l'origine d'un bug lorsque l'on travaille sans méthode. Je ne souhaite pas vous offrir LA méthode, mais une méthode qui me semble la plus rationnelle possible.

http://cpcrulez.fr - HEBDOGICIEL n°85

★ LICENCE: COMMERCIALE
★ ANNÉES: 1985
★ AUTEUR(S): ???

Page précédente : La page pédagogique d'hebdogiciel 084: Formation à l'assembleur - La Pile

CPCrulez[Content Management System] v8.75-desktop/c
Page créée en 469 millisecondes et consultée 1079 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.