Organisation des ordinateurs Examen de première session 2012 Livres fermés. Durée : 3 heures 1/2. Veuillez répondre à chaque question sur une feuille séparée sur laquelle figurent nom, prénom et section. Soyez bref et concis, mais précis. [5/20] 1. Construire un circuit séquentiel capable de détecter des valeurs vraies isolées dans un flux de données booléennes. Ce circuit possède une entrée i, par laquelle lui sont successivement fournies les données à traiter, et une sortie s. Cette sortie s doit produire une valeur égale à 1 chaque fois que l’entrée reçoit un bit égal à 1 qui est à la fois précédé et suivi d’un bit égal à 0. Dans tous les autres cas, la sortie s doit produire une valeur nulle. A titre d’exemple, voici le comportement souhaité du circuit pour un scénario particulier (le temps évoluant de gauche à droite) : i s [2/20] [2/20] [1/20] [4/20] [1/20] [5/20] 0 0 0 1 0 1 0 1 1 0 1 1 0 0 1 1 1 0 1 ··· ? 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 ··· 2. (a) On considère la suite de bits formée par a bits égaux à 1 suivis par b bits égaux à 0 suivis par c bits égaux à 1, avec a > 0, b > 0 et c > 0. Calculer le nombre que cette suite de bits représente par la méthode du complément à deux. (b) Quel est le plus grand nombre qui peut être représenté de façon exacte par le procédé IEEE 754 en simple précision ? (Détailler votre raisonnement.) (c) Quelle est l’utilité de la représentation dénormalisée des mantisses dans le procédé IEEE 754 ? 3. (a) On souhaite assembler un composant de mémoire vive et un composant de mémoire morte, tous deux 1G × 8, de façon à obtenir une mémoire composite 2G × 8. Les adresses les plus basses de cette mémoire doivent correspondre aux cellules de la mémoire vive. Dessiner un schéma complet montrant comment réaliser cet assemblage. (Note : La forme des lignes de contrôle des composants peut être librement choisie.) (b) Quelle est l’utilité des lignes d’état d’un processeur ? 4. Ecrire un programme assembleur 80x86 capable de compter dans un tableau le nombre de valeurs qui appartiennent à un intervalle donné. Initialement, le registre AX pointe vers un tableau d’octets et CX contient la taille de celui-ci. Les registres BL et BH contiennent respectivement une borne inférieure a et une borne supérieure b, toutes deux signées. A la fin de son exécution, le programme doit retourner dans DX le nombre d’octets du tableau dont la valeur (signée) est comprise entre a et b (ces bornes étant incluses). On demande également que ce programme laisse inchangées les valeurs des registres AX, CX, BL et BH. 1 Annexe 1 : Modes d’adressage des instructions 80x86 Op.1 rα mα rα pα MOV Op.2 Op.1 rα rα rα rα mα pα rα mα ADD, Op.1 rα mα rα pα r16 m16 Op.2 pα iα iα iα SUB, AND, OR, Op.2 Op.1 rα rα rα rα mα pα rα mα i8 p16 i8 XCHG Op.1 Op.2 rα rα mα rα pα rα rα mα rα pα XOR, CMP Op.2 pα iα iα iα i8 PUSH Op.1 r16 m16 i16 POP Op.1 r16 m16 INC, DEC, MUL, NOT Op.1 rα mα pα JMP, LOOP, CALL Op.1 i16 r16 m16 p16 r = registre, i = immédiat, m = direct, p = indirect ou indirect indexé, α = 8 ou 16. Annexe 2 : Instructions de saut conditionnel Instr. JE JNE JG JGE JL JLE JA JAE JB JBE Condition de saut Op1 = Op2 Op1 6= Op2 Op1 > Op2 (valeurs Op1 ≥ Op2 (valeurs Op1 < Op2 (valeurs Op1 ≤ Op2 (valeurs Op1 > Op2 (valeurs Op1 ≥ Op2 (valeurs Op1 < Op2 (valeurs Op1 ≤ Op2 (valeurs 2 signées) signées) signées) signées) non signées) non signées) non signées) non signées)