Inf 2170
Examen intra-trimestriel
25 points
Automne 1995
Toute documentation permise
Durée de 2 heures
5 points No 1) a) Donnez deux nombres de 16 bits, en hexadécimal, tels que leur somme positionne le bit V à 0 et le bit C à 1. b) De même, donnez deux nombres tels que leur somme positionne le bit V à 1 et le bit C à 0.
points No 2) Existe-t-il des nombres tels que leur représentation IEEE 32 bits donne une perte de précision de plus de 1000 ? Si oui, donnez un exemple et expliquez pourquoi il y a perte de précision de plus de 1000. Si non, justifiez votre réponse.
points No 3) Soient les définitions suivantes.
data
somme: dc.l 12
car: ds.b 1
carre: dc.w 10
end
a) Donnez une description, octet par octet, du contenu de la mémoire
centrale pour la section data
à partir de l'étiquette somme
.
b) Donnez le contenu du registre d0.l, en décimal, après l'exécution de chacune des instructions suivantes: (si le contenu est inconnu indiquez-le par le symbole --)
move.l #1,d0
move.b #'a',d0
move.b car,d0
move.w carre,d0
5 points No 4) Traduire le pseudo-code suivant en assembleur M680xx.
Le vecteur V est formé d'entiers de 32 bits, x
et y
sont
des étiquettes.
Pour i de 1 à 1000 Faire
Début
Si V[i] < x Alors V[i] <- 1
Si V[i+1] > y Alors V[i+1] <- 2
Fin
6 points No 5) Traduire la fonction suivante en assembleur M680xx. Bien indiquer la façon de passer les paramètres et de retourner le résultat. Les entiers ont 16 bits.
Fonction f(x: cardinal, y:integer): integer;
Var u, b: integer;
Début
Si x > 10 Alors Retourner(0)
Sinon
Début
u <- 1; b <- x;
Tantque b > 10 Faire Début u <- u * y; b <- b - u; Fin
Fin
Finsi
Retourner( u )
Fin f;