28. Un petit jeu de cible
Construisez un jeu de trois tours avec un état enregistré et un score.
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.
STORE 5 200
LOAD [200] R1
LOAD 0 R2
LOOP 3
INPUT
CMP R1
JUMP_IF_ZERO hit
JUMP next
hit: LOAD R2
ADD 1
COPY R0 R2
next: NOP
RETURN
LOAD R2
STORE 201
PRINT
HALT
Ajouter les entrées à la file: 5, 2, 5
Initialiser la mémoire: 200: 5
2. Construire et vérifier
La mémoire 200 contient un octet cible. Lisez exactement trois propositions. Comptez celles qui correspondent à la cible, enregistrez le score en mémoire 201 et affichez-le une fois.
Types d’instructions requis: INPUT, CMP, LOOP, STORE, JUMP_IF_ZERO
Programme de départ
LOAD [200] R1
LOAD 0 R2
LOOP 3
INPUT
CMP R1
#
RETURN
LOAD R2
STORE 201
PRINT
HALT
Votre programme et vos notes
3. Expliquer la machine
Quel état change en cas de proposition correcte ou incorrecte ?
29. Un utilitaire de tampon utilisant la pile
Combinez entrées, boucles, pile et stockage indexé.
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 3 R3
LOAD 10
PUSH
LOAD 20
PUSH
LOAD 30
PUSH
LOAD 0 R1
LOOP R3
POP
STORE R1
PRINT
LOAD R1
ADD 1
COPY R0 R1
RETURN
HALT
Ajouter les entrées à la file: Aucune
Initialiser la mémoire: Tous les octets sont initialement nuls
2. Construire et vérifier
Lisez N (0 à 5), puis exactement N octets. Utilisez la pile de données pour les inverser. Affichez la suite inversée et enregistrez-la à partir de l’adresse mémoire 0.
Types d’instructions requis: INPUT, LOOP, PUSH, POP, STORE
Programme de départ
INPUT
COPY R0 R3
LOOP R3
#
RETURN
LOAD 0 R1
LOOP R3
#
RETURN
HALT
Votre programme et vos notes
3. Expliquer la machine
Pourquoi utiliser deux phases et que doit faire N = 0 ?
30. Votre propre mini système d’exploitation
Répartissez des travaux en attente vers des services réutilisables et enregistrez les résultats.
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 4
CALL double
STORE 64
PRINT
LOAD 3
CALL square
STORE 65
PRINT
HALT
double: MUL 2
RETURN
square: MUL R0
RETURN
Ajouter les entrées à la file: Aucune
Initialiser la mémoire: Tous les octets sont initialement nuls
2. Construire et vérifier
Lisez N (0 à 3), puis N paires (opération, valeur). L’opération 0 double, 1 calcule le carré et 2 ajoute un. Répartissez le travail avec des sous-programmes appelés par CALL. Affichez chaque résultat complet et enregistrez son octet aux adresses 64, 65, … dans l’ordre des travaux.
Types d’instructions requis: INPUT, LOOP, CALL, CMP, STORE, RETURN
Programme de départ
INPUT
COPY R0 R3
LOAD 64 R2
LOOP R3
INPUT
COPY R0 R4
INPUT
COPY R0 R1
#
RETURN
HALT
double: MUL 2
RETURN
square: MUL R0
RETURN
increment: ADD 1
RETURN
Votre programme et vos notes
3. Expliquer la machine
Pourquoi une sortie de 260 peut-elle coexister avec un octet de journal de 4 ?