TRAVAUX DIRIGES ARCHITECTURE DES ORDINATEURS ARCHITECTURE DES ORDINATEURS Codage des caractères 1. Quelle est la signification de la suite d’octets suivants (exprimés en hexadécimal) en mémoire, en supposant qu’il s’agit d’une suite de codes ASCII ? 42 72 61 76 6F 07 0A 47 41 47 4E 45 20 21 00 Logique combinatoire 2. Donner les tables de vérité et les symboles électroniques des fonctions logiques AND, OR, NOT. 3. Dans une brasserie, vous commandez « un sandwich au pâté OU au jambon ET un verre de bière ». Le garçon, occupé, ne comprend pas très bien votre affirmation, surtout quand à la place du ET et du OU. Aussi plusieurs interprétations sont-elles possibles. Lesquelles peut-il choisir parmi les propositions ci-dessous ? Y a-t-il ambiguïté ? Pourquoi ? un sandwich au pâté, un sandwich au jambon, un verre de bière, un sandwich au pâté et un verre de bière, un sandwich au jambon et un verre de bière, un sandwich au pâté et un sandwich au jambon, un sandwich au pâté, un sandwich au jambon et un verre de bière. 4. Trouver l’équation X, Y et Z des logigrammes ci-dessous. NON ET OU Architecture des ordinateurs-TD1 Page : 1/4 TRAVAUX DIRIGES ARCHITECTURE DES ORDINATEURS Y Z 5. Ecrire la table de vérité de la fonction logique suivante : F(P,Q)=(P ET Q) OU (NON P ET NON Q) et dessiner le logigramme 6. On veut réaliser un circuit logique qui dit si un nombre binaire sur 3 bits est divisible par trois. Donner la table de vérité de la fonction « nombre de trois bits divisible par trois ». On rappelle que 0 est divisible par 3 puisque 0 3 0 reste 0 . Déduire une réalisation de cette fonction en circuit logique utilisant les portes NON, ET et OU. 7. Vous participez à un jeu d’aventures ; après de multiples embûches, deux chemins s’offrent à vous : l’un conduit vers le trésor, l’autre vers une mort certaine. Deux lutins se présentent. Ils peuvent guider votre choix, cependant vous n’avez droit qu’à une seule question, à un seul des lutins. Mais attention, l’un des lutins dit toujours la vérité, l’autre jamais, et ils le savent. Quelle question poserez-vous pour aller vers le trésor ? Algorigramme préparation à l’assembleur 8. Dessiner un algorigramme qui lit une suite de caractères, un par un, en les comptant, jusqu’à un caractère «.» qui marque la fin de la saisie. Le programme affiche ensuite le nombre de caractères qui ont été tapés par l’utilisateur. Exemple : l’utilisateur tape « azerty. », l’ordinateur doit afficher ensuite « 6 lettres ». 9. Ecrire un algorigramme qui lit une suite de chiffres, caractère par caractère, en fait la somme, jusqu’à un caractère «.» qui marque la fin de la saisie. Le programme affiche ensuite le nombre de chiffres tapés et la somme de ces chiffres. Architecture des ordinateurs-TD1 Page : 2/4 TRAVAUX DIRIGES ARCHITECTURE DES ORDINATEURS Exemple : l’utilisateur tape « 1234. », l’ordinateur doit afficher ensuite « 4 chiffres dont la somme est egale a 10 ». 10. Comment réserver 100 octets pour y ranger une chaîne de caractères ? Trouver dans les exemples d’assembleur les instructions nécessaires Comment procéder à la lecture (2 solutions) ? Combien de lettres « utiles » pourront être tapées au maximum par l’utilisateur ? Comment faire pour réafficher la chaîne à l’écran ?, puis affichant le nombre de caractères tapés par l’utilisateur. 11. Comment réserver 5 cases de 32 bits (4 octets) chacune, pour y stocker 5 valeurs entières tapées successivement au clavier par l’utilisateur ? Comment calculer leur somme, puis l’afficher ? Ecrire un algorigramme réalisant ces opérations. 12. Ecrire un algorigramme qui permet à l’utilisateur de taper un message de moins de 500 lettres (octets), puis qui le code en substituant chaque lettre minuscule, une par une, par celle symétrique dans l’alphabet (ex : az, by, cx…), et qui affiche, au final, le message codé. Le programme ne doit pas changer les lettres autres que les minuscules. Comment peut on procéder au décodage ? Essayer avec le message suivant : « Czvhzi hvizrg urvi wv elfh ! ». Masque 13. On veut forcer les bits 2, 4 et 7 de la valeur contenue dans le registre AL à être mis à un. Comment procéder ? 14. Même question que la 13, mais pour forcer les bits à être à zéro. 15. On veut écrire une routine qui saute à l’adresse plouf si les bits numéro 2, 4 et 7 de la représentation binaire de la valeur contenue dans le registre AL sont tous les trois à zéros, et saute à l’adresse wizz sinon. Comment isoler les valeurs de ces bits, et comment procéder pour le saut ? Manipulations basiques de la pile 16. En vous servant de push et pop, écrire une routine « swap_ab » qui échange les valeurs contenues dans les registres eax et ebx sans modifier d’autres registres et sans réserver de mémoire ni en section .data, ni en section .bss. Exécuter la routine à la main, en faisant des schémas représentatifs de l’état de la pile après chaque opération. 17. Ecrire une routine « ear1 » qui écrit en hexadécimal à l’écran, l’adresse à laquelle elle effectuera son retour. (Indication : étudier le fonctionnement des instructions call et ret). Faire comme précédemment des diagrammes illustrant l’état de la pile après chaque opération. 18. Ecrire une routine « ear2 » qui répond à la même question que précédemment, mais en prenant garde à ne pas détruire la valeur contenue dans eax avant l’appel de la routine. Faire, ici aussi, les schémas. Architecture des ordinateurs-TD1 Page : 3/4 TRAVAUX DIRIGES ARCHITECTURE DES ORDINATEURS ANNEXE Architecture des ordinateurs-TD1 Page : 4/4