REPRÉSENTATION des INFORMATIONS - ARCHITECTURE des ORDINATEURS
Exercices de TDs

Page réalisée par:
Philippe Moreau
UPJV


Rappels de numération

Conversion d'un nombre d'une base B dans une base B'

Ex1: Convertir de Décimal en Binaire les nombres suivants:
  - 129 , 261 , 245 en utilisant la méthode des divisions successives
  - 129 , 261 , 245 en utilisant la méthode de la table de puissances
  - avantages et inconvénients des deux méthodes

Ex2: Convertir de Binaire en Décimal les nombres suivants: 110110, 1010101, 1100, 100001010, 11111111111

Ex3: Convertir de Décimal en Hexadécimal les nombres suivants: 172 , 96

Ex4: Convertir d'Hexadécimal en Décimal les nombres suivants: B5 , A1C

Ex5: Convertir d'Hexadécimal en Binaire les nombres suivants: B5, A1C, 5D9E, 3F9C

Ex6: Convertir de Binaire en Hexadécimal les nombres suivants: 110110 , 1011101 , 111001110 , 10010111010

Ex7: Convertir d'Hexadécimal en Octal les nombres suivants: 5D9E , 3F9C faut-il passer par le décimal?

Ex8: Convertir d'Octal en Hexadécimal les nombres suivants: 5793, 3621

Ex9: Convertir de Décimal en Binaire les nombres suivants:
  - 64,34375 en utilisant la méthode des tables de puissances
  - 18,385 en utilisant la méthode des tables de puissances
  - observation de la table des puissances, repérer des nombres non représentables

Ex10: Convertir de Décimal en Binaire les nombres suivants: 35,25 - 64,34375 en utilisant la méthode des "multiplications successives"

Ex11: Donner l'écriture Binaire des nombres Décimaux suivants: 0,15 - 1/3 - 18,385 (méthode des "multiplications successives")

Ex12: Convertir de Décimal en Hexadécimal les nombres suivants: 35,25 - 64,34375 (méthode des "multiplications successives")

Ex13: Convertir de Décimal en Hexadécimal les nombres suivants: 35,25 - 64,34375 (en passant par le binaire)

Ex14: Citer d'autres bases plus ou moins couramment utilisées.


Rappels des algorithmes liés aux opérateurs arithmétiques

Ex15: Réaliser les additions suivantes:

en binaire 10110
10101+11011
+101111+110111
 
en hexadécimal A4F2 A5EF
+1808+6A45

Nous verrons, par la suite, que les problèmes de soustractions peuvent être résolus en utilisant des "algorithmes" de codification (cf représentation des nombres entiers signés).


Ex16: Réaliser les multiplications suivantes:
  (1 1 0 1 1 1)2 x (129)10 = ( ? )16
  (1 1 0 1 0)2 x (33)10 = ( ? )16

Ex17: (division) Réaliser la conversion du nombre 1 1 1 0 1 0 1 0, écrit dans la base 2, dans la base 10 en utilisant la méthode des divisions successives.

Ex18: (entracte) montrer que 22n+1+1 est divisible par 3.

Ex19: (critère de divisibilité) donner des diviseurs (déduction "visuel", sans conversion) du nombre 101001010

 

Représentation des informations

les chiffres: DCB

Ex1: Réaliser l'addition suivante en DCB:

  0101 1000
+0010 0011

les caractères: code ASCII

Ex2: Traduire et compléter le message suivant, écrit en code ASCII
  1 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 0 0 1 0 1 1 1 0 0 1 1
  0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 1 0 1
  1 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1

Ex3: Donner le codage en hexadécimal du dernier message (écrit en ASCII) en supposant que le bit7 est à 1.

 

Les nombres

les entiers (non signés)

Ex4: Donner le codage (sur un octet) des nombres suivants: 100, 200, 50, 120

Ex5: Faire réaliser à une machine (la machine "sait faire" des additions binaires) les opérations suivantes:

  100 200 50 
+120+100+50 
- interpréter les résultats
- trouver le moyen pour détecter qu'un résultat est faux.

entiers signés

Ex6: Donner le codage (sur un octet) des nombres suivants: -64, -45, -1, -120

Ex7: Faire réaliser à une machine les opérations suivantes:

  100 100 -64 -120 50 -45 
+50+-45+-64+-45+ -120+-1 
- interpréter les résultats
- trouver le moyen pour détecter qu'un résultat est faux.

nombres fractionnaires virgule fixe

Ex8: Donner une représentation des nombres suivants en utilisant le format [5,3] signé: 9,75 -5,25 3,5625

Ex9: Peut-on trouver un format permettant de représenter 3,5625?

nombres fractionnaires virgule flottante

Ex10: Donner une représentation des nombres suivants en utilisant le format [S,4,3] (avec la version "intuitive": mantisse sous la forme 0,1xxx 4 chiffres pour la mantisse et 3 pour l'exposant): 2,75 -3,25 12,5

Ex11: Peut-on trouver un format permettant de représenter -12,5 ?

Ex12: Donner une représentation des nombres suivants en utilisant le format [S,3,4] type IEEE754: 2,75 -3,25 12,5


autres informations: des "pixels" (rappels de logique)

Ex13: Sachant qu'un octet Oc représente 8 pixels, écrire les opérations qui permettent de:

 - allumer le 3ème point (correspondant au 3ème bit d'un octet)
- éteindre le 3ème point
- visualiser le 3ème point (réflexion)
- inverser le 3ème point
- inverser tous les point sauf le 3ème
(donner d'autres écritures de cette dernière opération)

Ex14: Calculer le "bit V" (V=1 si et seulement si l'addition de 2 entiers signés est fausse réflexir à plusieurs solutions de formules logiques).

Ex15: Après l'addition de deux bits B1 et B2, donner les "formules" des bits S et R, où S correspond à la Somme et R est le bit correspondant à la retenue générée.

Ex16: Idem, mais cette fois avec trois bits à additionner B1, B2 et R0 (qui pourrait correspondre à une retenue précédemment générée). Donner les formules de S (la Somme) et de R (la retenue).

Révision

Ex17: Donner toutes les interprétations et valeurs possibles de l'octet C5

 

L'assembleur

Les modes d'adressages - définition d'un programme assembleur (MV68xxx) - présentation de quelques instructions

On considère la portion de mémoire et les registres suivants:

  $8F0  42    
 $8F1  80  D0    C C  A B  C D  E F 
 $8F2  08  
 $8F3  F5  D1    F E  D C  B A  E A 
 $8F4  57  
 $8F5  81  A0    C C  D D  B B  A A 
 $8F6  43  
 $8F7  BB  A1    E C  F D  A B  A B 
 $8F8  EC  
 $8F9  C3  
 $8FA  E5  
 $8FB  C1  
 $8FC  E9  
 $8FD  C2  

Ex1: Décrire les contenus des registres modifiés après les lignes suivantes:

 MOVE#20,D0
MOVE$8F0,A0
MOVE$8F3,D1

Ex2: même exercice en repartant des données initiales

 MOVE#$8F0,A0
ADD.L#2,A0
MOVE(A0),A1
MOVE.B(A1),D0
ADD.L#2,A1
MOVE(A1),D1

Ex3: même exercice en repartant des données initiales

 MOVE#$8F0,A0
ADD(A0)+,D0
MOVE(A0)+,A1
MOVE.B-(A1),D0
MOVE.L#3,D1
ADD.L2(A1,D1),D1

Ex4: En utilisant l'adressage absolu, écrire la ou les lignes permettant de réaliser l'opération suivante:

Transférer le contenu de $8F0-$8F1 en $8F8-$8F9.

Ex5: Même exercice en utilisant l'adressage indirect

(Transférer le contenu de $8F0-$8F1 en $8F8-$8F9).

Ex6: En utilisant l'adressage absolu, écrire la ou les lignes permettant de réaliser l'opération suivante:

Transférer le contenu de $8F3-$8F4 en $8FA-$8FB.

Ex7: Même exercice en utilisant l'adressage indirect.

Ex8: Même exercice en utilisant l'adressage indirect postincrémenté.

Ex9: Même exercice en utilisant les adressages indirect prédécrémenté, avec déplacement, avec déplacement et index.


simulation des principales structures de programme

Ex10: "Traduire" si le contenu de $8F0 est nul additionner $8F1 et $8F2 et mettre le résultat en $8F4 sinon additionner $8F1 et $8F3 (résultat dans $8F4).

Ex11: "Traduire" $8F6 reçoit la somme de $8F4 et $8F5 ($8F4, $8F5 et $8F6 sur 8 bits)

Ex12: "Traduire" $8F6 reçoit la somme de $8F4 et $8F5 ($8F4, $8F5 sur 8 bits et $8F6 sur 16 bits représentant des entiers non signés)

1) l'addition s'effectue sur 16 bits

2) l'addition s'effectue sur 8 bits avec gestion de la retenue

i - dans un registre

ii- directement en mémoire

Ex13: "Traduire" $8F6 reçoit la somme de $8F4 et $8F5 ($8F4, $8F5 sur 8 bits et $8F6 sur 16 bits représentant des entiers signés)

1) l'addition s'effectue sur 16 bits (conversion des nombres 8 → 16 bits)

2) l'addition s'effectue sur 8 bits avec gestion du signe après addition

Ex14: Que faut il changer si les informations représentent des fractionnaires virgule fixe au format [5,3] et le résultat sur 16 bits (format?) (uniquement l'idée)

Ex15: Ecrire les instructions qui permettent de faire la somme des 300 premiers entiers (boucle "pour" test en début de boucle)

Ex16: Même exercice que le précédent, en simulant une boucle "répète"

Ex17: Ecrire un sous programme réalisant la somme de deux registres D0 et D1 (D1 sur 16 bits D0 sur 32 bits (entiers non signés)) résultat dans D0 (sur 32 bits) et se servir de ce sous programme pour effectuer la somme des 3000 premiers entiers.


"déclaration" de "variables" + le jeu d'instructions

Ex18: "Traduire" Z ← X+Y sachant que: Z est sur 32 bits, X sur 8 bits et Y sur 16 bits. (donner la déclaration)

Ex19: "Traduire" Z ← X+Y sachant que: X, Y et Z sont sur 64 bits. (donner la déclaration)

Ex20: Faire la somme des 30 premiers éléments d'un tableau T

Ex21: Rechercher la valeur de X dans un tableau T

Ex22: Calculer l'iso-baricentre d'un polygone stocké sous la forme d'une suite de points donnés par leurs coordonnées X,Y (du type X1,Y1,X2,Y2,X3,Y3,...) on supposera que le nombre de points NBPT est "déclaré" juste avant la variable POLY (toutes les variables sur 16 bits). Rmq : cela permet de mettre en œuvre un exemple d'adressage indirect avec déplacement (0 pour X, 2 pour Y) et index (qui contient la référence au point 2xN°point)

Ex23: Ecrire un sous programme assembleur permettant recopier la valeur du bit 0 du registre de données D0 du microprocesseur 68000 dans le bit 6 de ce même registre.

Ex24: Ecrire un sous programme assembleur permettant de permuter la valeur du bit 0 du registre de données D0 avec celle du bit 6.

Ex25: Une station reçoit, via un réseau local, un texte crypté correspondant à une suite de caractères codés en ASCII. Le processus de cryptage consiste simplement à permuter les valeurs du bit 0 avec celle du bit 6 pour chaque octet du texte. Cette suite d'octets est stockée en mémoire à partir de l'adresse indiquée par le registre A1. Le nombre d'octets constituant ce texte "crypté" est indiqué dans le registre D3.
Proposer un programme assembleur permettant le décryptage de ce texte en vous aidant des deux précédents exercices.


Les appels systèmes

Ex26: Saisir un caractère au clavier, et afficher à l'écran le caractère suivant

Ex27: Afficher à l'écran:

AB

C

Ex28: Ecrire un sous programme qui (à partir de la valeur présente dans D1 (valeur comprise entre 0 et 7)) permet d'allumer la led de numéro D1+1 (à partir de la gauche). On testera l'affichage de la Led.
Rappel : avec D1 à 2 et HARDWARE, on récupère (dans D1) l'adresse de l'octet correspondant aux Leds.

Ex29: Afficher une chaine de caractères terminée par 0

Ex30: Afficher une chaine de caractères (terminée par 0) positionnée sur la 10ème ligne 20ème colonne

Ex31: Ecrire un sous programme qui permet d'initialiser trois variables HEURE, MINUTE, SECONDE avec les valeurs correspondant à l'heure actuelle.
Rappel : avec D0 à 8 on récupère le nombre de centièmes de secondes depuis minuit.

Ex32: Afficher un DCB contenu dans le quartet de poids faible de D1

Ex33: Afficher le contenu d'un octet en binaire

Ex34: Afficher un quartet en Hexadécimal

Ex35: Afficher le contenu de D0 en Hexadécimal

Ex35: Ecrire un sous programme qui (à partir de la valeur présente dans D1 (valeur de chiffre)) prépare D2 avec l'octet qui permettra d'afficher le dit chiffre dans l'afficheur 7-segments. On testera l'affichage dans l'afficheur. Rappel de la correspondance des bits avec les segments :

Rappel : avec D1 à 1 et HARDWARE, on récupère l'adresse de l'afficheur 7-Segments.

Ex36: Tester le sous-programme écrit à l'exercice 31 en affichant l'heure avec l'afficheur 7-Segments

Ex37: Afficher le contenu de D0 en Décimal

Ex38: Saisir un chiffre et stocker sa valeur dans un octet

Ex39: Saisir un nombre en Binaire

Ex40: Saisir un nombre en Hexadécimal

Ex41: Saisir un nombre en Décimal

Ex42: Saisir une cha”ne de caractères

Ex43: Tester la bibliothèque graphique en affichant un rectangle Rouge avec une bordure bleue et une ellipse jaune avec une bordure verte

Ex44: Tester les informations souris en écrivant un sous-programme qui attend que l'on appuie sur une touche de la souris et récupère les coordonnées dans des variables XMOUSE, YMOUSE et l'état des boutons dans BUTTON

Ex45: Simuler la fonction "crayon" (des logiciels de dessin)