Université de Reims
Champagne-Ardenne
U.F.R. de Sciences
Exactes et Naturelles
Licence MMI
Info(rmatique) 11
2004/2005
Devoir surveillé
Barème indicatif (sur 40) :
– Exercice 1 : 10 points
– Exercice 2 : 15 points
– Exercice 3 : 8 points
– Exercice 4 : 4 points
– Présentation des algorithmes
et clarté de la rédaction : 3 points
Aucun instrument de calcul ou appareil électronique n’est autorisé.
Documents autorisés : annexe du cours d’architecture ; votre compte rendu de Travaux
Pratiques1.
Exercice 1 (Binaire et représentation des données)
1
˚
) Binaire mathématique
– Donnez l’écriture binaire mathématique de l’entier 369.
– Donnez l’écriture en base 10 de (a2f)16 .
2
˚
) Représentation signée des entiers, sur un octet
– Quelles sont les valeurs représentées par [10110111]c2et [a6]c16 ?
– Donnez la représentation signée de l’entier -10.
– Effectuez la soustraction binaire (−80) −54, et vérifiez en base 10 la valeur obtenue.
3
˚
) Représentation des caractères
– Quelle est la phrase représentée par les octets suivants (donnés en hexadecimal) :
314575726F203C203224
– Donnez la représentation de la phrase suivante : ”Reims (51)”
1manuscrit (non photocopié), portant votre nom et agrafé
Licence MMI Info(rmatique) 11
Exercice 2 (Architecture, langage d’assemblage)
1
˚
) Rappelez la signification des abbréviations UC et UAL.
2
˚
) On considère le code assembleur dont l’écriture hexadecimale est :
0002 4104 9001 3105 8111 1000 7000
– Donnez l’écriture de ce code en utilisant les mnémoniques du langage.
– Construisez l’organigramme correspondant à ce code assembleur.
– Ecrivez un algorithme correspondant à ce traitement, en considérant que les trois premières
cases de la mémoire de données correspondent au trois variables a,bet c.
3
˚
) On considère le code suivant :
0 : LOAD Mem[0]
1 : MUL 2
2 : CMP 15
3 : JPZ 8
4 : LOAD Mem[0]
5 : ADD Mem[1]
6 : STORE Mem[0]
7 : JMP 1
8 : END
Après avoir précisé quelles sont les cases de la mémoire de données utilisées par ce code, dressez
son tableau d’exécution (sans donner l’écriture hexadecimale des instructions), en supposant que les
premiers octets de la mémoire correspondent à l’écriture hexadecimale 050bf06d.
4
˚
) Ecrivez un code assembleur permettant d’échanger les contenus des cases 0 et 1 de la mémoire de
données : vous donnerez son écriture selon les mnémoniques du langage, puis en écriture hexadecimale.
Exercice 3 (Algorithmique)
1
˚
) Ecrivez un algorithme permettant de stocker dans deux variables aet bdes valeurs fournies par
l’utilisateur et de calculer leur produit (bfois la quantité a,bétant supposé positif)EN N’UTILI-
SANT QUE DES ADDITIONS, et de ranger le résultat dans la variable cavant de l’afficher.
2
˚
) Comment l’adapter pour qu’il permette d’effectuer le produit avec aet bde signes quelconques ?
3
˚
) Ecrivez un fichier source de programme Java correspondant au traitement précédent (complet).
Exercice 4 (Langage Java, compilation)
On considère la définition de classe suivante (les lignes du fichier sont numérotées) :
class DS { // 1
public st a t ic void main ( S t r i n g [ ] a r g s ){ // 2
int x=3; // 3
// 4
i f ( x = 3 ) // 5
x = x+1 // 6
// 7
y = x / 3 ; // 8
p r i n t l n ( "x=" + x + " ␣ ; ␣y=" + y ) ; // 9
}// f i n du main // 10
}// f i n de l a c l a s s e // 11
– Quel nom donneriez-vous au fichier contenant cette définition ?
Quelle est la commande permettant la compilation et, en cas de succès, quel serait le nom du
fichier produit ? Quelle serait alors la commande pour l’exécution du programme ?
– En fait, la compilation met en évidence 4 erreurs. Trouvez les et corrigez les.