Voici un programme machine
Exercice d'entraînement · niveau 2 · NSI (première), chapitre 9 — Machines, systèmes et réseaux · Circuits et langage machine
Énoncé
Voici un programme machine. La case contient , la case contient .
CHARGE R1, 50
CHARGE R2, 51
SOUSTRAIT R1, R2
RANGE R1, 52
CHARGE R1, 52
AJOUTE R1, R2
RANGE R1, 53
- Dérouler et donner le contenu final de et .
- Les lignes 4 et 5 sont-elles utiles ? Que se passerait-il si on les supprimait ?
- Que vaut quel que soit le contenu initial de et ? Le démontrer.
Corrigé
1. R1, R2, puis R1 et ; la ligne 5 recharge dans R1 (qui le contenait déjà), la ligne 6 donne R1, et .
2. Elles sont inutiles ici : RANGE n'efface pas le registre, et CHARGE R1, 52 y remet exactement ce qui s'y trouvait. Les supprimer donne le même résultat en cinq instructions au lieu de sept.
Elles ne seraient plus inutiles si une autre instruction modifiait R1 entre-temps, ou si un autre programme pouvait écrire en — mais le modèle est séquentiel, et rien de tel ne se produit.
3. , toujours : le programme recopie en , par un détour. Il est correct pour toutes les valeurs de , y compris négatives.
Piège : croire que RANGE « vide » le registre. Elle en copie le contenu ; le registre reste inchangé. C'est la même distinction qu'entre b = a et un déplacement, au chapitre 4.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.