Corrigé pour l’enseignant

La mémoire en octets

Recueillez quatre types d’indices : prédiction de l’état pertinent ; comportement dans des cas variés, y compris aux limites ; explication fondée sur la trace et l’état ; correction justifiée d’un écart. Évaluez chacun comme en développement, avec soutien ou autonome, sur papier ou selon la procédure approuvée de votre école. Réussir un défi prouve un comportement de la machine, pas la paternité du code ni une maîtrise complète. Acceptez les programmes équivalents corrects : le corrigé public est un modèle, pas l’unique réponse possible.

Matériel pédagogique public. Les solutions sont des exemples ; des programmes équivalents corrects peuvent aussi réussir les vérifications réelles.

7. La mémoire : le carnet de l’ordinateur

Enregistrez un octet et relisez-le réellement après avoir remplacé R0.

Ouvrir cette leçon →

1. Prévoir et tracer

Avant d’exécuter le programme d’essai, prévoyez sa sortie et tracez les trois premières instructions exécutées. Suivez les registres, les indicateurs ou la mémoire pertinents, selon le besoin. Avancez ensuite pas à pas pour comparer.

LOAD 42
STORE 0
LOAD 99
STORE 1
LOAD 0
LOAD [0]
PRINT
LOAD [1]
PRINT
HALT

Ajouter les entrées à la file: Aucune

Initialiser la mémoire: Tous les octets sont initialement nuls

Corrigé de la prédiction d’essai

Sortie: 42, 99

InstructionPC avantPC aprèsR0 avantR0 aprèsÉtat pertinentSortie
LOAD01042{"registers":[42,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]}Aucune
STORE124242{"registers":[42,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[0]}Aucune
LOAD234299{"registers":[99,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]}Aucune

2. Construire et vérifier

Lisez une entrée de 0 à 255, enregistrez-la à l’adresse mémoire 10, mettez R0 à zéro, puis relisez la valeur en mémoire et affichez-la.

Types d’instructions requis: INPUT, STORE, LOAD

Exemple de solution du défi

INPUT
STORE 10
LOAD 0
LOAD [10]
PRINT
HALT

Cas réels du vérificateur

Cas 1
Entrée
9
Mémoire initiale
Tous les octets sont initialement nuls
Sortie attendue
9
Mémoire finale attendue
10: 9
Lectures mémoire requises
10
Cas 2
Entrée
42
Mémoire initiale
Tous les octets sont initialement nuls
Sortie attendue
42
Mémoire finale attendue
10: 42
Lectures mémoire requises
10
Cas 3
Entrée
127
Mémoire initiale
Tous les octets sont initialement nuls
Sortie attendue
127
Mémoire finale attendue
10: 127
Lectures mémoire requises
10

3. Expliquer la machine

Quel code lit la mémoire 10 et lequel charge le nombre 10 ?

Raisonnement et note pédagogique

LOAD [10] lit l’octet ; LOAD 10 charge un littéral. STORE puis la relecture préservent l’octet au-delà du remplacement de R0.