• Aucun résultat trouvé

Examen 1

N/A
N/A
Protected

Academic year: 2022

Partager "Examen 1"

Copied!
6
0
0

Texte intégral

(1)

GIF-1001, 10 mars 2010 Nom/Matricule : _________________________

Examen 1

Cet examen vaut 40% de la note totale du cours. Les questions seront corrigées sur un total de 40 points.

La valeur de chaque question est indiquée avec la question. Une calculatrice scientifique peut être utilisée.

Cependant, aucune documentation, autre que les annexes, n’est permise. Vous pouvez répondre aux questions directement sur ce questionnaire et/ou dans le cahier bleu mis à votre disposition.

Q1 (1+2+1+1+3+4 points) : Vous avez le système microprocesseur suivant :

Microprocesseur -16 registres de 8 bits pour les opérations d'ALU (R0 à R15) - Registre d'Instruction (IR) sur 16 bits

0x00 0x81 0x44 0x420x44 0x80 0x44 0x21 Données

Lecture Écriture Activation

0x81 0x40 0x11 0x820x08 0x40 0x40 0x81 Données

Lecture Écriture Adresse

Adresse Activation

Mémoire 1 Mémoire 2

8 8

A2 A0 A3 A4

Octet 0 de la mémoire

Dans ce système, le microprocesseur exécute des instructions dont le format est décrit en annexe B. Le microprocesseur a 16 registres tout usage identifiés par R0 à R15 dans le texte qui suit. Par ailleurs, l’opcode de toutes les instructions est à l’adresse la plus basse, les paramètres étant à l’adresse la plus haute.

Ai) Combien d’instructions maximum peuvent être dans un programme supporté par ce microprocesseur (si toutes les adresses indiquaient une cellule unique de mémoire)?

Aii) Pour toutes les adresses du microprocesseur, dites quelle mémoire est accédée.

Mi) Combien d’accès mémoire seront nécessaire pour lire et exécuter l’instruction MOV R0, R1?

Mii) En fonction des valeurs de l’annexe B, comment serait encodée l’instruction MOV R0, Mavar, sachant que Mavar est une variable en mémoire? Choisissez l’adresse de MaVar.

Miii) Supposons que l’adresse de la variable Mavar est 0x12 et que Mavar vaut 0x34.

Supposons aussi que l’instruction MOV R0, Mavar soit à l’adresse 0x08. Dites quelle séquence de valeurs apparaîtra sur les bus d’adresse, de données et de contrôle du système lorsque l’instruction sera lue, puis exécutée.

Oi) Si la valeur initiale du compteur de programme (PC ou IP pour le 8086) est 0, dites que vaudront R4 et PC après l’exécution de trois instructions.

(2)

Q2 (10 points) : Le Binary Coded Decimal (BCD) est une façon de représenter les entiers en binaire. Avec le BCD, quatre bits sont utilisés pour représenter des nombres de 0 à 9 et six valeurs possibles des quatre bits (de 10 à 15) ne sont pas utilisées. Par

exemple, pour coder le nombre 2539d en BCD, vous retrouverez 0010 0101 0011 1001b en binaire.

Écrivez une fonction en assembleur qui additionne deux octets codés en BCD (un octet en BCD vaut de 0 à 99) et retourne la somme en BCD. Par exemple, votre fonction doit retourner 0x97 lorsque la fonction additionne 0x38 et 0x59. Considérez les éléments suivants :

- Les nombres à additionner sont dans AH et BH avant l’appel de la fonction - Le résultat de l’addition doit être dans CH.

- Le drapeau C doit être 1 lorsque le résultat de l’addition est supérieur à 0x99.

- À l’exception de CH, tous les registres doivent avoir la même valeur avant et après l’appel de la fonction (fonction propre)

- Habituellement, l’addition en BCD se fait par nibble (groupes de 4 digits). On additionne 6 si le résultat de l’addition est supérieur à 9.

- Considérez que l’instruction AAA n’existe pas.

- L’annexe A contient une liste d’instructions du 8086 qui peut vous aider.

- Le code suivant pourrait appeler votre fonction : MOV AH, NombreBCD1

MOV BH, NombreBCD2 Call AddOctetBCD MOV Resultat, CH

Q3 (5 points) : La valeur ASCII de ‘0’ est 0x30. Celle de ‘9’ est 0x39, de telle sorte que la valeur ASCII d’un nombre X entre 0 et 9 est X + 0x30. Dans l’exemple qui suit, le nombre représenté en ASCII dans AL est converti en décimal dans CL (CL = AL – 0x30) :

main:

PUSH AX

CALL ConvertirNbreASCIIenDecimal POP CX

ConvertirNbreASCIIenDecimal PROC PUSH BP

PUSH BX MOV BP, SP MOV BX, [BP + 6]

SUB BX, 0x30 MOV [BP + 6],BX POP BX

POP BP RET

ConvertirNbreASCIIenDecimal ENDP

Sachant que lors d’un empilement dans le 8086, SP est décrémenté de 2 puis la valeur empilée est mise sur la pile, illustrez l’évolution de la pile lors de l’exécution des instructions commençant à l’étiquette main. Une image vaut mille mots, mais plusieurs images, c’est encore mieux!

(3)

Q4 (10 points) : Indiquez si les énoncés suivant sont vrai ou faux. Une bonne réponse vaut 1 point, une mauvaise réponse vaut -0.5 points et pas de réponse vaut 0.

# Énoncé V/F

A La valeur zéro peut être représentée en ASCII avec un byte ne valant pas zéro, en décimal sur deux bytes valant zéro et en fraction sur quatre bytes.

B L’addition ou la soustraction de nombres représentés en notation complément 2 s’effectue toujours de la même manière, peu importe le signe des nombres.

C Le compilateur remplace toutes les étiquettes (JMP MonEtiquette) et tous les noms de fonction (CALL Mafonction) par des valeurs indiquant les adresses des étiquettes et des fonctions lorsqu’il génère le code binaire.

D C’est grâce à son nom qu’un microprocesseur trouve une variable. En effet, lorsqu’il doit lire ou écrire une variable, le microprocesseur cherche son mon dans la mémoire pour savoir son emplacement.

E Lorsque le microprocesseur ne trouve pas un registre dans sa mémoire interne, il le cherche d’abord dans la cache L1.

F Un disque dur tourne à vitesse angulaire constante afin d’assurer un taux de transfert de données constant, les données en périphérie étant moins denses.

G Un CD ou DVD réinscriptible contient un alliage spécial dont les propriétés optiques changent en fonction de la vitesse de refroidissement de l’alliage.

H L’assembleur remplace tous les mots d’un fichier texte en instructions binaires pour le microprocesseur. Il faut donc un programme en assembleur pour chaque jeu d’instruction.

I Dans une architecture Von Neumann, que l'on retrouve dans les ordinateurs modernes, les données et instructions sont séparées sur des mémoires différentes.

J Le BIOS, en mémoire non-volatile, contient les premières instructions exécutées par le microprocesseur. Ces instructions testent l’ordinateur et chargent le système d’exploitation en accédant aux périphériques de base.

(4)

Q5 (3 points) : Pour les trois questions suivantes, choisissez uniquement le meilleur choix de réponse.

A) Généralement, lors d’une interruption, un microprocesseur : i. Termine l’instruction en cours

ii. Sauvegarde l’adresse de la prochaine instruction sur la pile iii. Trouve l’adresse d’une routine pour traiter l’interruption iv. Effectue un saut à une routine pour traiter l’interruption

v. Exécute une fonction spéciale codée à l’intérieur du microprocesseur vi. Toutes ces réponses, dans l’ordre, de i à iii

vii. Toutes ces réponses, dans l’ordre, de i à iv viii. Toutes ces réponses, dans l’ordre, de i à v

B) Habituellement, l’adresse de la routine servant à traiter/servir une interruption…

i. … est prédéterminée dans le microprocesseur.

ii. … est déterminée par une table en mémoire ROM.

iii. … est déterminée par une table en mémoire RAM.

iv. … est calculée en fonction de la météo.

C) Habituellement, lorsqu’un périphérique veut indiquer un évènement :

i. Il active une ligne spéciale d’interruption et attend indéfiniment que le microprocesseur traite l’interruption.

ii. Il prend le contrôle du bus de donnée et indique au microprocesseur qu’il y a une interruption.

iii. Il active une ligne spéciale d’interruption, puis il prend le contrôle du bus de donnée pour donner plus d’information au microprocesseur sur

l’interruption.

iv. Il écrit un octet de statut spécial à l’intérieur de la mémoire pour indiquer l’interruption

v. Aucune de ces réponses.

QBonus (2 points bonus) : Mathématiquement, effectuer c = a + (-b) revient à effectuer c = a – b. Cependant, effectuer c = a + (-b) n’a pas le même effet qu’effectuer c = a –b sur les drapeaux de l’ALU. Quel(s) drapeau(x) rend cette affirmation vraie? Illustrez à l’aide d’un exemple.

(5)

Annexe A : Liste non exhaustive des instructions du 8086 Instruction Description

ADD a,b Effectue a = a+b.

AND a,b Effectue a = a ET b, où ET est un ET logique.

CALL proc Appelle la procédure proc et empile l’emplacement de retour.

CLC Met à 0 le drapeau de retenue (carry).

CMP a,b Effectue a-b, a et b sont inchangés.

DEC a Décrémente a.

DIV mot Effectue AX = DXAX/mot, non signé, le résultat est tronqué (arrondi inférieur).

IDIV mot Effectue AX = DXAX/mot, signé, le résultat est tronqué (arrondi inférieur).

IMUL mot Effectue DXAX = AX*mot, signé.

IN dst, port Met la valeur lue sur le port de I/O port dans dst.

INC a Incrémente a.

INT a Appelle la routine de service d’interruption a. Empile les drapeaux et l’emplacement de retour.

IRET Retourne d’une int. en dépilant l’emplacement de retour et les drapeaux.

JC label Saute à l’instruction désignée par label si le drapeau Carry est 1.

JMP label Saute à label. La prochaine instruction exécutée est désignée par label.

JNC label Saute à l’instruction désignée par label si le drapeau Carry est 0.

JNZ label Saute à l’instruction désignée par label si le drapeau Zéro est 0.

JNS label Saute à l’instruction désignée par label si le drapeau Signe est 0.

JZ label Saute à l’instruction désignée par label si le drapeau Zéro est 1.

JS label Saute à l’instruction désignée par label si le drapeau Signe est 1.

LEA dst,var Met l’adresse de la variable var dans dst.

MOV dst,src Met le contenu de src dans dst. Ne change pas les drapeaux.

MUL octet Effectue AX = AL*octet, non signé.

NEG a Inverse tous les bits de a, puis ajoute 1.

NOT a Inverse tous les bits de a.

OR a,b Effectue a = a OU b, où OU est un OU logique.

OUT port, src Met la valeur de src sur le port de I/O port.

POP mot Dépile un mot. Ne change pas les drapeaux.

POPF Dépile les drapeaux.

PUSH mot Empile un mot. Ne change pas les drapeaux.

PUSHF Empile les drapeaux.

RET et RETF Retourne d’une procédure en dépilant l’emplacement de retour. RET dépile IP. RETF dépile IP puis CS.

RCL a,b Fait une rotation de b bits vers la gauche. La rotation inclut le bit de Carry.

RCR a,b Fait une rotation de b bits vers la droite. La rotation inclut le bit de Carry.

SAL a,b Décale tous les bits de a vers la gauche d’un nombre de bits égal à b. Des zéros sont mis à droite. Carry prend la valeur du bit disparu.

SAR a,b Décale tous les bits de a vers la droite d’un nombre de bits égal à b. Le bit le plus significatif de a est mis à gauche. Carry prend la valeur du bit disparu.

STC Met à 1 le drapeau de Carry SUB a,b Effectue a = a-b.

TEST a,b Effectue a ET b, où ET est un ET logique.

XOR a,b Effectue a = a XOR b, où XOR est un OU eXclusif.

(6)

Annexe B : Format des instructions du microprocesseur de la question 1 Instruction Paramètres Description

ADD Reg/Reg Opcode X Y

Opcode = 21h 8 bits 4 bits 4 bits RegistreX = RegistreX + RegistreY

JMP dest Opcode Dest

Opcode = 40h 8 bits 8 bits L'adresse de la prochaine instruction exécutée est Dest

MOV Reg/Reg Opcode X Y

Opcode = 80h 8 bits 4 bits 4 bits RegistreX = RegistreY

MOV Reg/LMem Opcode X Adr

Opcode = 81h 8 bits 4 bits 4 bits RegistreX = Memoire à l'adresse Adr

MOV Reg/UMem Opcode X Adr

Opcode = 82h 8 bits 4 bits 4 bits RegistreX = Memoire à l'adresse Adr + 16

MOV Reg/LCte Opcode X Cte

Opcode = C0h 8 bits 4 bits 4 bits RegistreX = (RegistreX & 0x0F) + Cte

Les 4 derniers bits du registre = Cte

MOV Reg/UCte Opcode X Cte

Opcode = C1h 8 bits 4 bits 4 bits RegistreX = (RegistreX & 0xF0) + Cte*16

Les 4 premiers bits du registre = Cte

Références

Documents relatifs

Quelle est la probabilité que l’éolienne soit détruite au cours de sa première année de fonctionnement.. Quelle est l’espérance du montant des sinistres au cours de la

(a) Lorsque le solde en espèces d’un compte LCP ou d’un compte RCP d’une personne autre qu’une entité réglementée, une contrepartie agréée ou une institution agréée est

Par la première implication, cette égalité exprime le fait que la fonction caractéristique de (X,Y ) est la même que celle d'un couple de deux variables aléatoires indépendantes

solution /j,z de l'4quation aux differences finies h laquelle s'applique les r4sultats du precedent ehapitre.. Sur la reprdsentation des solutions d'une

Q5.12 : Lors de la lecture et de l’exécution d’une instruction comme LOAD R0, MaVar (lire MaVar en mémoire et mettre la valeur lue dans le registre R0), le microprocesseur met

Q5.12 : Lors de la lecture et de l’exécution d’une instruction comme LOAD R0, MaVar (lire MaVar en mémoire et mettre la valeur lue dans le registre R0), le microprocesseur met

Si les deux pr´ ec´ edentes m´ ethodes n’ont rien donn´ e, on peut appliquer la m´ ethode de la variation de la

1. utiliser TO pour valeurs consécutives.. condition de continuer : parenthèses facultatifs.. E) Boucle de répétition avec