• Aucun résultat trouvé

Ordinateur papier Cardiac v

N/A
N/A
Protected

Academic year: 2022

Partager "Ordinateur papier Cardiac v"

Copied!
2
0
0

Texte intégral

(1)

LYCÉE MARIE CURIE 1NSI 2019–2020

Ordinateur papier Cardiac v

Indications préalables :

Découper et construire l’ordinateur papier Cardiac (si possible sur un papier épais)

La version papier du Cardiac n’est pas vraiment un ordinateur puisque c’est vous qui devez réaliser une partie des opérations (dont une partie du contrôle et les calculs), mais les actions s’y enchaînent comme sur un ordinateur réel. Pour le faire fonctionner :

1. Copier dans la mémoire et/ou le ruban d’entrée les informations initiales souhaitées.

2. Réaliser les actions demandées en suivant les flèches à partir de celle Initialiser et jusqu’à arriver à STOP. Ne tenez pas compte de l’initialisation du compteur ordinal à 00 si une autre valeur est spécifiée. Lors de l’incrémentation du compteur ordinal, faire coulisser les curseurs pour obtenir la nouvelle valeur souhaitée. Lors du chargement d’une instruc- tion, faire coulisser les curseurs pour que la fenêtre du registre d’instruction corresponde à l’instruction chargée. Lors d’un calcul, faire coulisser le curseur indiquant si oui ou non le contenu du registre accumulateur est à 0000.

Exercice 1

Initialiser tout d’abord l’ordinateur en suivant les instructions suivantes :

• Sur le ruban d’entrée, placer les valeurs suivantes aux numéros indiqués (attention à l’ordre) :

1. 023 2. 010

• Sur la mémoire centrale, placer le contenu suivant aux numéros de cellules indiqués : 20. 034

21. 035 22. 234

23. 635 24. 628 25. 436

26. 136 27. 900 28. 009

• Enfin, mettre le compteur ordinal sur la valeur 20.

1. Faire fonctionner le Cardiac papier jusqu’à l’arrêt de l’ordinateur. Que fait-il ?

2. Pouvait-on prévoir avant l’exécution si les cellules mémoire entre les adresses 20 et 28 contenaient des instructions ou des données ?

3. Dans ce programme, où sont les instructions et où sont les données ? Exercice 2

Écrire en langage machine, c’est à dire sous la forme de nombres décimaux sur trois caractères devant se trouver à certaines adresses mémoire, un programme Cardiac lisant un nombre sur le ruban d’entrée et imprimant 1 sur le ruban de sortie si ce nombre est supérieur ou égal à 10 ou 0 s’il est strictement inférieur. Pour répondre, donner l’état de la mémoire au début du programme, la valeur initiale du compteur ordinal, et un exemple de ruban d’entrée.

(2)

Plutôt que d’utiliser le langage machine, qui n’est pas très parlant pour les humains (à moins peut-être d’y être plongé depuis des années), on utilise un langage intermédiaire, le langage assembleur. Pour cela, on donne un nom aux instructions du processeur (voir le jeu d’instructions sur la partie principale du processeur Cardiac). On peut également nommer des lignes (donc en particulier utiliser des noms de variables). Une traduction en langage assembleur du programme exécuté au tout début est :

.at 20 INP 34 INP 35 LDA 34 ADD 35 ADD n STA 36 OUT 36 HRS 00 n: .word 009

ou, en nommant les espaces mémoire utilisés (et en les initialisant, ici à 000) :

.at 20 INP a INP b LDA a ADD b ADD n STA x OUT x HRS 00 n: .word 009

.at 34 a: .word 000 b: .word 000 x: .word 000 Voir le fichier de documentation de Cardiac pour plus d’informations.

Exercice 3

Traduire en langage assembleur le programme écrit à l’exercice 2.

Tester le programme en le chargeant sur le simulateur disponible à l’adresse pointée par ce lien.

Exercice 4 (Facultatif )

Écrire un programme en assembleur Cardiac lisant un nombre n sur le ruban d’entrée et écrivant la suite des nombres de 1 à n sur le ruban de sortie.

Exercice 5 (Facultatif )

Écrire un programme en assembleur Cardiac calculant la multiplication de deux nombres lus sur l’entrée et écrivant le résultat sur la sortie.

Python dispose d’une bibliothèque permettant de traduire un code Python en langage assembleur de l’ordinateur (qui n’est pas le même que le langage Cardiac, bien sûr). Cette bibliothèque est appelée dis.

Exemple Copier et exécuter le code Python suivant (attention à bien indenter) :

import dis code = """

x=3 if x<0:

y=-x else:

y=x

"""

dis.dis(code)

Références

Documents relatifs

V&amp;V qui peuvent être appliquées sur un système dont le comportement est défini en uti- lisant un langage de modélisation. Les exigences associées aux systèmes exprimées sous

Lors d'une lecture, c'est la mémoire qui envoie un mot sur le bus (le contenu de l'emplacement demandé); lors d'une écriture, c'est le processeur qui envoie

La méthode qui permet de placer un nombre sur une règle nous donne la méthode pour comparer deux nombres décimaux, le plus grand de deux nombres étant le plus à droite.. ) Tout

Création dynamique d'une page Web avec le langage de programmation Python A partir d'une variable qui contient la liste des noms et des adresses URL des images (ici), écrire un

Pour ranger une série de nombres décimaux, tu dois les comparer puis les dire ou les écrire dans un ordre précis : soit du plus petit au plus grand (ordre croissant), soit du

IL On voit, par ce qui précède, qu'étant donnés deux nombres entiers ou décimaux contenant un nombre limité ou illimité de chiffres , on pourra toujours trouver le quo- tient de

« Indique-moi deux nombres décimaux différents et je suis certaine à chaque fois d'en trouver un qui se trouvera entre les deux.. Elle réfléchit et

 Comparer 2 nombres décimaux, c’est dire s’ils sont égaux ou si l’un est plus petit ou plus grand que l’autre.  Encadrer un nombre, c’est trouver un nombre plus petit