★ CODING ★ HEBDOGICIEL ★ COURS D'ASSEMBLEUR- HEBDOGICIEL n°85 ★ |
La page pédagogique d'hebdogiciel 085 | Coding Hebdogiciel |
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 Sous-programme a 100 CALCULE 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). Sous-proqramme a 100 CALCULE 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
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.
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.
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. https://CPCrulez.fr - HEBDOGICIEL n°85
|