Architecture des ordinateurs
L3 Informatique 2013-2014
TD/TP 8 - Assembleur et C
Points abord´es
– Encodage des instructions.
–´
Ecrire des fonctions en assembleur dans un code C.
Exercice 1. (Encodage d’une instruction)
´
Ecrivez un exemple simple de programme assembleur utilisant l’instruction inc eax
et ouvrez l’ex´ecutable obtenu sous DDD.
(a) Identifiez le code en langage machine qui correspond `a inc eax.
(b) En testant de mˆeme les diff´erents arguments de l’instruction inc, d´eterminer la
mani`ere dont cette instruction est cod´ee en langage machine.
Exercice 2. (Renverser un tableau)
´
Ecrivez un programme C, qui cr´ee un tableau d’entiers de ncases et le remplit comme
vous le souhaitez, puis le renverse (c’est `a dire ´echange les cases iet n−i−1) `a l’aide
d’une fonction Renverse(tab,n) (o`u tab est le tableau et nsa taille) qui sera cod´ee en
assembleur. Votre fonction ne devra pas utiliser de tableau annexe.
Exercice 3. (Crible d’´
Eratosth`ene)
Le crible d’´
Eratosth`ene est une m´ethode rapide pour d´eterminer quels sont les entiers
premiers plus petit que n. Il consiste `a initialiser un tableau tab de ncases en mettant
toutes ses valeur `a 1, sauf les cases 0 et 1 qui sont mises `a 0. Ensuite, pour chaque case
i≥2, si tab[i] vaut 0, on ne fait rien et s’il vaut 1, on met `a 0 les cases k×iavec k > 1
et k×i<n.
´
Ecrivez un programme en C qui impl´emente le crible d’´
Erathosth`ene. Le programme
principal, la r´eservation m´emoire et les entr´ees-sorties seront faits en C et la fonction
calculant le crible sera faite en assembleur. Cette fonction prendra en argument la taille
du tableau.
1