INFO0061 — Organisation des ordinateurs Examen écrit du jeudi 18 août 2011 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. 1. Construisez un circuit séquentiel capable de déterminer si des nombres fournis en entrée sont ou non égaux à 0. Ce circuit possède deux entrées i et f et une sortie s. Les nombres à traiter sont représentés par la méthode du complément à 2, et leurs encodages sont successivement fournis à l’entrée i, un bit étant transmis à chaque période d’horloge en commençant par le bit de signe. L’entrée f vaut 1 lorsque le bit présent à l’entrée i est le dernier de l’encodage d’un nombre, et 0 sinon. Lorsque f vaut 1, la sortie s doit valoir • 1 si le nombre dont la lecture se termine est égal à 0, et • 0 sinon. Lorsque f vaut 0, la sortie s doit également valoir 0. A titre d’illustration, voici le comportement souhaité du circuit pour des valeurs particulières des entrées i et f (le temps évoluant de gauche à droite) : i f s 1 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 ··· ··· ··· Note : Les nombres successivement fournis au circuit dans cet exemple sont −2, −1, 0, −4, 4 et 0. 2. (a) Décrivez les intérêts théoriques et pratiques de la représentation par complément à 2 des nombres entiers signés par rapport à i. la représentation par valeur signée ; ii. la représentation par complément à 1. (b) La séquence 10000000101010000000000000000000 représente un nombre réel x dans la norme IEEE 754 simple précision. i. Quelle est la valeur de x ? Justifiez. x ii. Donnez la représentation de dans cette même norme. Justifiez. 2 3. (a) Quel est le principe de fonctionnement d’une porte à trois états ? Quelle est l’utilité de ce type de portes ? Citez-en une application typique. 1 (b) Dans un processeur, quelle est l’utilité de l’unité arithmétique et logique ? Décrivez ses entrées et sorties, ainsi que le rôle de chacune d’entre elles. 4. Ecrivez un programme assembleur 80x86 capable de dédoubler une chaı̂ne de caractères. La chaı̂ne de caractères à dédoubler est codée en ASCII, et placée dans des octets consécutifs du segment de données. L’adresse du premier octet de cette chaı̂ne est initialement contenue dans le registre BX, et la taille de la chaı̂ne est donnée dans CX. Le but du programme demandé est de recopier, à la suite d’elle-même dans le segment de données, la chaı̂ne pointée par BX. Exemple (avec CX contenant initialement 4) : a b c a b c a (Avant) ↑ BX a a b c a 2 (Après) 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α XCHG Op.1 Op.2 rα rα mα rα pα rα rα mα rα pα SUB, AND, OR, XOR, CMP Op.2 Op.1 Op.2 rα rα pα rα rα iα mα pα iα rα mα iα i8 p16 i8 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 3 signées) signées) signées) signées) non signées) non signées) non signées) non signées)