![]() Page réalisée par: Philippe Moreau UPJV |
Remarques:
- les étiquettes SI: , ALORS: , FIN_ALORS: , FIN_SINON: sont inutiles pour l'écriture du programme, mais peuvent permettre (au brouillon) de faciliter la traduction de la structure SI--- ALORS --- SINON.
- En règle générale cette structure sera réduite à: | - ou encore, en faisant passer la séquence du "SINON" avant celle du "ALORS" |
Traduire
SI D0=0 ALORS | |
D1 ← D1 + D2 | |
SINON | |
D1 ← D1 + D3 | |
FINSI |
version1
| ou bien |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
ou encore |
|
Faire une boucle d'attente qui se réalise 2000 fois
Donc "traduire":
|
par:
|
ou encore en "décomptant":
|
Bien que les labels portent la mention "Pour", nous venons en fait d'écrire le principe de la boucle TANT QUE. (test d'arrêt placé en début de boucle)
Remarque: Ici encore, l'étiquette FIN_REPETE est inutile mais permet de visualiser la fin de la séquence de boucle.
décrémenter le registre D0 jusqu'à ce que celui-ci soit nul
Donc "traduire":
|
par:
|
ou encore en:
|
Remarque: dans le dernier cas, on se sert du fait que l'addition (ADD) agit sur le bit Z du registre d'état pour tester ce bit avec BNE
L'instruction DBRA
syntaxe:
DBRA Dn,Destination
Action réalisée:
On décrémente le registre Dn et si Dn est différent de -1 on effectue un branchement à Destination
Exemple d'utilisation: souvent on est amené à compter un certain nombre d'itérations. Exemple: on avait écrit une boucle qui se réalisait 2000 fois en décomptant.
Ce que l'on a écrit:
|
aurait pu s'écrire:
|
ou encore:
|
En assembleur la notion de procédure ou fonction (au sens vu dans le langage algorithmique) n'existe pas. Par contre il existe la notion de sous programmes; l'équivalent des procédures ou fonctions mais sans passage de paramètres ni notion de variables locales. Si l'on veut utiliser ces notions, il faudra les implanter (simuler).
Les instructions JSR et RTS
syntaxe:
JSR Destination
Action réalisée:
On note sur la pile l'adresse de la ligne courante et on effectue un branchement à Destination
syntaxe:
RTS
Action réalisée:
On récupère l'adresse qui est sur la pile pour s'y rendre (après un JSR permet de revenir à l'endroit de l'appel
si dans le programme principal on trouve:
|
et à un autre endroit dans le programme
|
Les séquences d'instructions seront alors exécutées dans l'ordre suivant:
Séquence 1 - Séquence 3 - Séquence 2