next up previous
Next: À propos de Up: No Title Previous: Examen intra-trimestrielÉté 1995,

Examen intra-trimestriel, Été 1995, Groupe 10

Inf 2170 Groupe 10
Examen intra-trimestriel
25 points
Été 1995
Toute documentation permise
Durée de 2 heures

points No 1) Implantez l'expression (2x + 4y) * (z - w) en assembleur en plaçant le résultat dans le registre d0. Les étiquettes x, y, z et w sont des mots de 16 bits contenant des nombres entiers codés en complément à deux.

points No 2) Supposons que le registre a1 pointe un mot de 16 bits et le registre a2 pointe un vecteur de 200 mots de 16 bits. Écrire une séquence d'instructions qui détermine si le registre a1 pointe dans le vecteur pointé par a2. Votre code branche à interieur si c'est le cas, à exterieur dans le cas contraire.

points No 3) Un programme qui est chargé en mémoire pour être exécuté peut se retrouver à une adresse quelconque. Expliquez comment les instructions peuvent référencer les variables de la partie data si les adresses de ces variables sont inconnues à l'assemblage du programme.

points No 4) Donnez les contenus des registres d1, d2 et a1 après l'exécution de chaque instruction. Si le contenu ne peut être spécifié, indiquez-le par le signe inconnu, si le contenu ne peut-être spécifié que symboliquement indiquez-le aussi.

          move.w   x,d1
          add.w    x+2,d1
          lea      x+2,a1
          move.w   (a1),d2
          move.w   (-2,a1),d2
          lea      z-2,a1
          move.w   (4,a1),d2
          data
     x    dc.w     20
     y    dc.w     30
     z    dc.w     40

points No 5) Supposons que le registre a1 pointe une chaîne de caractères d'une longueur inconnue mais qui se termine par un octet à 0. Écrire une séquence d'au plus 20 instructions assembleur pour compter le nombre de caractères de ponctuation parmi le point-virgule, la virgule et le point. Le résultat se retrouve dans le registre d1.



Mario Latendresse
Wed Jan 15 17:39:58 EST 1997