Adloun

Écrire un programme machine qui additionne le contenu des cases 30 à…

Exercice de TD · niveau 3 (difficile) · NSI (première), chapitre 9 — Machines, systèmes et réseaux · Von Neumann et langage machine

Énoncé

Écrire un programme machine qui additionne le contenu des cases à et range le résultat en . Indication : une boucle et un compteur.

Corrigé

Ce que le jeu d'instructions permet réellement. Une boucle demande de lire une case dont l'adresse change à chaque tour. Or CHARGE R, adr exige une adresse écrite en toutes lettres dans l'instruction. Avec le jeu d'instructions du chapitre tel quel, la boucle est impossible : il faut dérouler.


CHARGE R1, 30
CHARGE R2, 31
AJOUTE R1, R2
CHARGE R2, 32
AJOUTE R1, R2
CHARGE R2, 33
AJOUTE R1, R2
CHARGE R2, 34
AJOUTE R1, R2
RANGE  R1, 35

Dix instructions, dix pas d'exécution. Avec , on obtient .

La boucle, et ce qu'elle coûte. Pour la boucle demandée par l'indication, il manque une instruction — l'adressage indirect : CHARGEIND R1, R2 charge dans R1 le contenu de la case dont l'adresse est dans R2. Tout processeur réel en possède une. Avec elle, et trois constantes rangées en mémoire (, , , ) :


        CHARGE    R1, 80    ; total   <- 0
        CHARGE    R2, 81    ; adresse <- 30
        CHARGE    R3, 82    ; reste   <- 5
        CHARGE    R5, 83    ; la constante 1
boucle: SAUTESI   R3, fin
        CHARGEIND R4, R2    ; R4 <- contenu de la case d'adresse R2
        AJOUTE    R1, R4    ; total <- total + valeur
        AJOUTE    R2, R5    ; adresse suivante
        SOUSTRAIT R3, R5    ; une valeur de moins a lire
        SAUTE     boucle
fin:    RANGE     R1, 35

Onze instructions écrites, pas exécutés sur cinq valeurs — plus long que le déroulé. L'intérêt n'est pas la vitesse : c'est que le même programme somme cases en changeant un seul nombre, .

Contrôle : avec , on retrouve ; avec cinq , on obtient .

Piège : croire qu'il suffit d'écrire CHARGE R2, R3 pour lire « la case numéro R3 ». C'est justement la différence entre une adresse constante, gravée dans l'instruction, et une adresse calculée. Constater qu'elle manque vaut mieux que l'inventer.

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.