Examen Final
Inf 2170, Groupe 10
Automne 1995
25 points
Durée: 2h
Toutes documentations permises
D0
la somme des bits impairs
(1,3,5,...,31) du registre D1
. Le tout doit prendre moins de 10
instructions.
6 pts No 2) Écrire une sous-routine qui convertit toutes les lettres, d'une chaîne de caractères se terminant par un octet à zéro, de minuscule à majuscule sans affecter ni les autres caractères ni les majuscules déjà présentes dans cette chaîne. Bien commenter l'entrée et la sortie de votre sous-routine. Celle-ci doit avoir au maximum 20 instructions.
6 pts No 3) Donnez un exemple d'un nombre réel compris entre 14.5 et 14.7 qui ne peut-être stocké sans perte de précision sous la forme IEEE 32 bits. Montrez bien vos calculs.
7 pts No 4) Écrire une sous-routine récursive, en assembleur M68xxx, qui retourne le nombre de paires de parenthèses, d'une expression arithmétique, qui ne sont pas imbriquées dans d'autres paires de parenthèses. Par exemple, dans l'expression suivante
(2 + 4*(8+9) ) * (1+2) * ( (2)+(8+(7)) )
il y a trois paires de parenthèses qui ne sont pas imbriquées dans
d'autres paires. Votre solution doit être récursive et employée au
maximum 20 instructions. L'entrée de votre sous-routine est le
registre A0
qui pointe l'expression arithmétique (qui est une
chaîne de caractères se terminant par un octet à zéro) et la sortie
est le registre D0
qui contient le nombre voulu et le registre
A0
qui pointe sur l'octet à zéro. (L'expression
est bien formée, donc il ne manque pas de parenthèses, tout est bien
balancé, etc.) Remarque: il n'est pas nécessaire ni utile de
vérifier les opérateurs, les espaces ou les nombres. Il suffit
de s'occuper des caractères `()' et de l'octet à zéro.