Planche TD1 - Page du cours d`architecture des ordinateurs

publicité
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 : az, by, cx…), 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
Téléchargement