Exercices de TDs |
![]() Page réalisée par: Philippe Moreau UPJV |
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
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
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.L | 2(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)