• Aucun résultat trouvé

8A@HA@E &IAFJA>HA ,KH A DAKHAI -N=A.E=0ELAH 1. % HC=EI=JE@AIH@E=JAKHIAJ=IIA>AKH

N/A
N/A
Protected

Academic year: 2022

Partager "8A@HA@E &IAFJA>HA ,KH A DAKHAI -N=A.E=0ELAH 1. % HC=EI=JE@AIH@E=JAKHIAJ=IIA>AKH"

Copied!
12
0
0

Texte intégral

(1)

INF2170 Organisation des ordinateurs et assembleur

Examen Final Hiver 2012

Vendredi 28 septembre 2012 Durée 2 heures

Aucun document n'est autorisé. L'usage de la calculatrice est interdit. L'annexe est détachable (dernière feuille). Répondez et rendez seulement le formulaire (avant-dernière feuille).

Des points négatifs pourront être aectés à de très mauvaises réponses.

1 Questions de cours

Question 1 Que contient le registre pointeur de pile (stack pointer) ? A L'adresse de la base de la pile

B L'adresse du sommet de la pile C La taille de la pile

D L'adresse de l'instruction suivante dans la pile Question 2 Que fait l'instruction Pep/8 CALL ?

A Eectue un branchement sur l'opérande, puis empile le compteur ordinal

B Empile les paramètres de la fonction, puis empile le compteur ordinal, puis eectue un branchement sur l'opérande C Empile les paramètres de la fonction, puis eectue un branchement sur l'opérande

D Empile les paramètres de la fonction, puis eectue un branchement sur l'opérande, puis empile le compteur ordinal E Empile le compteur ordinal, puis eectue un branchement sur l'opérande

Question 3 Vous devez allouer un tableau dans la pile, quel mode d'adressage Pep/8 devriez-vous utiliser pour lire et écrire dans le tableau ?

A i B sf

C sxf D x

E s F n

G d H sx

(2)

2 Sous-programmes

Question 4 Qu'ache le programme suivant ? CALL ici

CHARO 'A',i ici : STOPCALL la

CHARO 'B',i RET0

la: CHARO 'C',i

RET2 ; ici c' est RET2

.END A CA B CAB C C

D B E CBA F rien

G AC

H n'importe quoi I BCA

J CB K BA L B Question 5 Soit le sous-programme mystère suivant:

1 mystere : CPA 0,i

2 BRNE a2

3 ADDX 1,i

4 RET0

5 a2: CPX 0,i

6 BRNE a3

7 SUBA 1,i

8 LDX 1,i

9 CALL mystere

10 RET0

11 a3: SUBX 1,i

12 SUBSP 2,i ; #sa

13 STA sa ,s

14 CALL mystere

15 LDA sa ,s

16 ADDSP 2,i ; #sa

17 SUBA 1,i

18 CALL mystere

19 RET0

20 sa: . EQUATE 0 ; #2d

21 .END

Soit les valeurs des registres suivantes A=0 X=2. Quel est la valeur du registre X après un appel au sous-programme mystère.

A 0 D 3 G 7 J 13

(3)

Question 7 Même question pour les valeurs des registres suivantes A=2 X=2.

Attention, cette question peut être plus longue qu'il n'y parait. À faire en dernier.

A 0 B 1 C 2

D 3 E 4 F 5

G 7 H 9 I 11

J 13 K 29

L n'importe quoi

Question 8 Indiquez ce qu'il se passerait-il si l'on remplaçait le CALL mystere des lignes 9 et 18 par un simple BR mystere .

A Le programme aurait exactement le même comportement mais serait moins rapide et consommerait plus de pile.

B Le programme semblerait fonctionner mais calculerait en fait des résultats erronés.

C Le programme partirait souvent en boucle innie jusqu'à que ce la pile explose (stack overow).

D Le programme aurait un comportement indéterminé (diérent en fonction de l'état de la mémoire au lancement).

E Le programme aurait exactement le même comportement mais serait plus rapide et consommerait moins de pile.

F Le programme aurait exactement le même comportement, la même vitesse et la même consommation de pile.

G Le programme ne s'assemblerait pas.

H Le programme partirait souvent en boucle innie jusqu'à que ce la pile implose (débordement vers le bas).

3 Paramètres et variables dans la pile

Soit le programme incomplet suivant composé d'un partie principale, d'un tableau TABLE de 10 mots et d'un sous- programme appelé ROUTINE. La partie principale doit invoquer ROUTINE en passant sur la pile l'adresse de la TABLE et son nombre d'éléments.

; Empilage des paramètres :

; insérez ici l' ajout sur la pile de l' adresse de la TABLE et du nombre d' éléments CALL ROUTINE

; Reste du programme : bla bla bla

TABLE : STOP. BLOCK 20 ; la table de 10 éléments

;; Prologue du sous - programme ROUTINE :

; déclaration des symboles ROUTINE : NOP0

; Début du sous - programme ROUTINE :

; réservation de pile suplémentaire et sauvegarde des registres

; Reste du sous - programme : bla bla bla .END

Question 9 Quelle séquence d'instructions faut-il écrire pour Empilage des paramètres ? A SUBSP 4,i

LDA TABLE,d STA 4,s LDA 10,i STA 2,s B LDA TABLE,d

STA 4,s LDA 10,i STA 2,s SUBSP 4,i

C SUBSP 4,i LDA TABLE,i STA 2,s LDA 10,i STA 0,s D LDA TABLE,i

STA 2,s LDA 10,i STA 0,s SUBSP 4,i

E LDA TABLE,d STA 2,s LDA 10,i STA 0,s SUBSP 4,i F SUBSP 4,i

LDA TABLE,i STA 4,s LDA 10,i STA 2,s

G LDA TABLE,i STA 4,s LDA 10,i STA 2,s SUBSP 4,i H SUBSP 4,i

LDA TABLE,d STA 2,s LDA 10,i STA 0,s

(4)

Question 10 Quelle séquence d'instructions faut-il écrire pour Prologue du sous-programme ROUTINE ? varia est une variable locale d'un octet. regsa et regsx sont deux variables locales pour sauvegarder les valeurs des registres A et X. nb et tab sont les deux paramètres du sous-programme. retour est l'adresse de retour de la fonction (cf. instructions CALL et RET). Note : ne laissez pas d'octets dans la pile non utilisés.

A retour:.EQUATE 0 varia: .EQUATE 2 regsx: .EQUATE 4 regsa: .EQUATE 6 nb: .EQUATE 8 tab: .EQUATE 10 B varia: .EQUATE 0

regsx: .EQUATE 1 regsa: .EQUATE 3 retour:.EQUATE 5 nb: .EQUATE 7 tab: .EQUATE 9 C retour:.EQUATE 10

varia: .EQUATE 8 regsx: .EQUATE 6 regsa: .EQUATE 4 nb: .EQUATE 2 tab: .EQUATE 0

D varia: .EQUATE 0 regsx: .EQUATE 1 regsa: .EQUATE 2 nb: .EQUATE 3 tab: .EQUATE 4 retour:.EQUATE 5 E varia: .EQUATE 0 regsx: .EQUATE 2 regsa: .EQUATE 4 nb: .EQUATE 6 tab: .EQUATE 8 retour:.EQUATE 10 F varia: .EQUATE 1

regsx: .EQUATE 2 regsa: .EQUATE 2 nb: .EQUATE 2 tab: .EQUATE 2 retour:.EQUATE 2

G varia: .EQUATE 10 regsx: .EQUATE 8 regsa: .EQUATE 6 retour:.EQUATE 4 nb: .EQUATE 2 tab: .EQUATE 0 H varia: .EQUATE 0 regsx: .EQUATE 1 regsa: .EQUATE 3 nb: .EQUATE 5 tab: .EQUATE 7 retour:.EQUATE 9 I varia: .EQUATE 0 regsx: .EQUATE 2 regsa: .EQUATE 4 nb: .EQUATE 6 retour:.EQUATE 8 tab: .EQUATE 10

J varia: .EQUATE 5 regsx: .EQUATE 4 regsa: .EQUATE 3 nb: .EQUATE 2 tab: .EQUATE 1 retour:.EQUATE 0 K varia: .EQUATE 10

regsx: .EQUATE 8 regsa: .EQUATE 6 nb: .EQUATE 4 tab: .EQUATE 2 retour:.EQUATE 0 L retour:.EQUATE 0 varia: .EQUATE 1 regsx: .EQUATE 2 regsa: .EQUATE 3 nb: .EQUATE 4 tab: .EQUATE 5 Question 11 Quelle séquence d'instructions faut-il écrire pour Début du sous-programme ROUTINE ? Note : ne réservez pas plus d'octets dans la pile que nécessaire.

A SUBSP 7,i STA regsa,d STX regsx,d B SUBSP 11,i

STA regsa,s STX regsx,s C SUBSP 8,i

STA regsa,d STX regsx,d

D SUBSP 5,i STA regsa,d STX regsx,d E SUBSP 7,i

STA regsa,s STX regsx,s F SUBSP 11,i

STA regsa,d STX regsx,d

G SUBSP 8,i STA regsa,s STX regsx,s H SUBSP 9,i

STA regsa,s STX regsx,s I SUBSP 5,i

STA regsa,s STX regsx,s

J SUBSP 6,i STA regsa,d STX regsx,d K SUBSP 9,i

STA regsa,d STX regsx,d L SUBSP 6,i

STA regsa,s STX regsx,s

(5)

4 Modes d'adressage dans la pile

Soit le listing suivant :

--- Object

Addr code Symbol Mnemon Operand Comment

---

0000 680006 SUBSP 6,i

0003 C10031 LDA a,d

0006 E30000 STA 0,s

0009 C00031 LDA a,i

000 C E30002 STA 2,s

000 F C0FFFF LDA -1,i

0012 E30004 STA 4,s

0015 3 B0000 ; DECO 0,s 0018 50000 A CHARO '\n',i

001 B C80004 LDX 4,i

001 E 3 E0000 DECO 0,sx 0021 50000 A CHARO '\n',i

0024 3 C0002 DECO 2,sf

0027 50000 A CHARO '\n',i 002 A 3 F0002 DECO 2, sxf 002 D 50000 A CHARO '\n',i

0030 00 STOP

0031 0001 a: . WORD 1 0033 0035 b: . ADDRSS c 0035 0002 c: . WORD 2 0037 0003 d: . WORD 3

0039 . END

---

Symbol table

---

Symbol Value Symbol Value

---

a 0031 b 0033

c 0035 d 0037

---

Question 12 Quel est le premier nombre aché (DECO 0,s) ? A -2

B -1 C 0 D 1

E 2 F 3 G 4 H 31

I 32 J 33 K 34 L 35

M 48 N 49 O 50 P 51

Q 52 R 53 S 255 T 256 Question 13 Quel est le second nombre aché (DECO 0,sx) ?

A -2 B -1 C 0 D 1

E 2 F 3 G 4 H 31

I 32 J 33 K 34 L 35

M 48 N 49 O 50 P 51

Q 52 R 53 S 255 T 256

(6)

Question 14 Quel est le troisième nombre aché (DECO 2,sf) ? A -2

B -1 C 0 D 1

E 2 F 3 G 4 H 31

I 32 J 33 K 34 L 35

M 48 N 49 O 50 P 51

Q 52 R 53 S 255 T 256 Question 15 Quel est le quatrième nombre aché (DECO 2,sxf) ?

A -2 B -1 C 0 D 1

E 2 F 3 G 4 H 31

I 32 J 33 K 34 L 35

M 48 N 49 O 50 P 51

Q 52 R 53 S 255 T 256

5 Flottants

Question 16 Convertissez le nombre décimal 123.875 en ottant simple précision (32 bits) selon la norme IEEE-754.

Rappel : 1 bit de signe, 8 bits d'exposant (pôle 7F), 23 bits de mantisse.

Quel est le premier octet de cette représentation ? A 12xxxxxx

B BCxxxxxx

C 42xxxxxx D 85xxxxxx

E C2xxxxxx F 3Cxxxxxx

G 3Fxxxxxx H 3Dxxxxxx Question 17 Quel est le second octet de cette représentation ?

A xxFBxxxx B xxFDxxxx

C xxBExxxx D xxBFxxxx

E xxF7xxxx F xxFExxxx

G xxEFxxxx H xxEExxxx Question 18 Soit C1245D638 la représentation hexadécimale d'un ottant simple précision IEEE-754.

Déterminez dans quelle fourchette se situe le nombre.

A < -1000

B entre -1000 et -100

C entre -100 et -10 D entre -10 et 0

E entre 0 et 10 F entre 10 et 100

G entre 100 et 1000 H > 1000

Question 19 Soit 3F400000 la représentation hexadécimale d'un ottant simple précision IEEE-754.

Quel est ce nombre ? A 0.75

B -0.875

C 1.5 D -1.75

E 1.75 F -0.75

G 0.875 H -1.5

(7)

6 Interruptions et appels systèmes

Question 20 Malheureusement à l'emploi de l'instruction DECI, si l'utilisateur entre des lettres, le message d'erreur:

"ERROR: Invalid DECI input" apparaît à l'écran et le programme se termine sur le champ.

On vous demande de modier l'instruction DECI an que le message d'erreur devienne: "Erreur: l'entrée n'est pas numérique". Quelles sont les étapes nécessaires pour apporter cette modication. De plus, l'instruction DECI ne doit plus terminer le programme.

Choisir parmi les choix de réponses suivantes, la meilleure solution à mettre en ÷uvre:

A On modie le message original par le nouveau message. On eectue un RETTR à la n de la routine DECI au lieu du STOP an de retourner au programme utilisateur (celui qui a fait le DECI). On assemble ensuite le nouveau système d'exploitation.

B Ce que l'on demande est impossible. On ne peut aucunement modier le système d'exploitation.

C Il est impossible de ne pas arrêter le programme lorsque DECI ache une erreur. On peut seulement se contenter de modier le message d'erreur.

D Il est impossible de modier DECI ou de coder un nouvel appel système qui fait ce que l'on demande. Par contre on peut contourner le problème en redénissant le symbole deciErr dans le programme principal utilisateur. Sachant que deciErr désigne l'adresse du sous-programme du système d'exploitation qui ache le message d'erreur et arrête le programme, cela permettrait de court-circuiter le comportent de DECI en cas d'erreur. De cette façon on a même pas besoin d'assembler le nouveau système d'exploitation.

E Il est impossible de modier DECI, on doit donc coder une nouvel appel système (par exemple en dénissant l'instruction NOP). Par contre on peut copier-coller des morceaux de DECI dans notre nouvel appel système pour nous sauver du temps.

F On modie le message original par le nouveau message. On eectue un RET0 à la n de la routine DECI au lieu du STOP pour retourner à la gérante du TRAP dans le système d'exploitation. On assemble ensuite le nouveau système d'exploitation.

G On ne peut pas modier DECI car le nouveau message d'erreur est plus long que le message original.

(8)
(9)
(10)

INF2170 Organisation des ordinateurs et assembleur Examen Final Hiver 2012

Feuille de réponses :

Code permanent :

. . . . Nom :

. . . . Prénom :

. . . . Les réponses aux questions sont à donner exclusivement sur cette feuille : les réponses données sur les

feuilles précédentes ne seront pas prises en compte.

Important : noircissez complètement l'intérieur de chaque case (pas de croix, pas de cercles).

Question 1 : A B C D Question 2 : A B C D E

Question 3 : A B C D E F G H

Question 4 : A B C D E F G H I J K L

Question 5 : A B C D E F G H I J K L

Question 6 : A B C D E F G H I J K L

Question 7 : A B C D E F G H I J K L

Question 8 : A B C D E F G H Question 9 : A B C D E F G H

Question 10 : A B C D E F G H I J K L

Question 11 : A B C D E F G H I J K L

Question 12 : A B C D E F G H I J K L M N O P Q R S T

Question 13 : A B C D E F G H I J K L M N O P Q R S T

Question 14 : A B C D E F G H I J K L M N O P Q R S T

Question 15 : A B C D E F G H I J K L M N O P Q R S T

Question 16 : A B C D E F G H Question 17 : A B C D E F G H Question 18 : A B C D E F G H

(11)

7 Annexes (détachable)

7.1 39 instructions Pep/8

Spécif. Instruct. Signications Modes Codes conditions

instr. d'adressage aectés

00000000 STOP Arrête l'exécution du programme 00000001 RETTR Retour d'interruption

00000010 MOVSPA Placer SP dans A 00000011 MOVFLGA Placer NZVC dans A

0000010a BR Branchement inconditionnel i,x

0000011a BRLE Branchement si inférieur ou égal i,x

0000100a BRLT Branchement si inférieur i,x

0000101a BREQ Branchement si égal i,x

0000110a BRNE Branchement si non égal i,x

0000111a BRGE Branchement si supérieur ou égal i,x

0001000a BRGT Branchement si supérieur i,x

0001001a BRV Branchement si débordement i,x

0001010a BRC Branchement si retenue i,x

0001011a CALL Appel de sous-programme i,x

0001100r NOTr NON bit-à-bit du registre NZ

0001101r NEGr Opposé du registre NZV

0001110r ASLr Décalage arithmétique à gauche du registre NZVC 0001111r ASRr Décalage arithmétique à droite du registre NZC

0010000r ROLr Décalage cyclique à gauche du registre C

0010001r RORr Décalage cyclique à droite du registre C

001001nn NOPn Interruption unaire pas d'opération

00101aaa NOP Interruption non unaire pas d'opération i

00110aaa DECI Interruption d'entrée décimale d,n,s,sf,x,sx,sxf NZV 00111aaa DECO Interruption de sortie décimale i,d,n,s,sf,x,sx,sxf

01000aaa STRO Interruption de sortie de chaîne d,n,sf

01001aaa CHARI Lecture caractère d,n,s,sf,x,sx,sxf

01010aaa CHARO Sortie caractère i,d,n,s,sf,x,sx,sxf

01011nnn RETn Retour d'un appel avec n octets locaux

01100aaa ADDSP Addition au pointeur de pile (SP) i,d,n,s,sf,x,sx,sxf NZVC 01101aaa SUBSP Soustraction au pointeur de pile (SP) i,d,n,s,sf,x,sx,sxf NZVC

0111raaa ADDr Addition au registre i,d,n,s,sf,x,sx,sxf NZVC

1000raaa SUBr Soustraction au registre i,d,n,s,sf,x,sx,sxf NZVC 1001raaa ANDr ET bit-à-bit du registre i,d,n,s,sf,x,sx,sxf NZ 1010raaa ORr OU bit-à-bit du registre i,d,n,s,sf,x,sx,sxf NZ

1011raaa CPr Comparer registre i,d,n,s,sf,x,sx,sxf NZVC

1100raaa LDr Placer 1 mot dans registre i,d,n,s,sf,x,sx,sxf NZ 1101raaa LDBYTEr Placer octet dans registre (0-7) i,d,n,s,sf,x,sx,sxf NZ 1110raaa STr Ranger registre dans 1 mot d,n,s,sf,x,sx,sxf

1111raaa STBYTEr Ranger registre (0-7) dans 1 octet d,n,s,sf,x,sx,sxf

(12)

7.2 8 directives Pep/8

Directive Signication

.BYTE Réserve 1 octet mémoire avec valeur initiale.

.WORD Réserve 1 mot mémoire avec valeur initiale.

.BLOCK Réserve un nombre d'octets mis à zéro.

.ASCII Réserve l'espace mémoire pour une chaîne de caractères (ex: "Chaîne").

.ADDRSS Réserve 1 mot mémoire pour un pointeur.

.EQUATE Attribue une valeur à une étiquette.

.END Directive obligatoire de n d'assemblage qui doit être à la n du code.

.BURN Le programme se terminera à l'adresse spéciée par l'opérande.

Ce qui suit .BURN est écrit en ROM.

7.3 Codes ASCII importants (hexadécimaux)

Codes ASCII Caractères

00 Caractère NUL

0A Caractère de saut de ligne '\n' (Enter)

20 Espacement ' '

30 Premier chire '0'

41 Premier caractère alphabétique majuscule 'A' 61 Premier caractère alphabétique minuscule 'a'

7.4 Adressages

Mode aaa a Lettres Opérande

Immédiat 000 0 i Spec

Direct 001 d mem[Spec]

Indirect 010 n mem[mem[Spec]]

Sur la pile 011 s mem[PP+Spec]]

Indirect sur la pile 100 sf mem[mem[PP+Spec]

Indexé 101 1 x mem[Spec + X]

Indexé sur la pile 110 sx mem[PP+Spec+X]]

Indirect indexé sur la pile 111 sxf mem[mem[PP+Spec]+X]

7.5 Registres

Symbole r Description Taille

N Négatif 1 bit

Z Nul (Zero) 1 bit

V Débordement (Overow) 1 bit

C Retenue (Carry) 1 bit

A 0 Accumulateur 2 octets (un mot)

Références

Documents relatifs

- Surlignez sur le texte photocopié les mots qui caractérisent les enfants que l’Énorme Crocodile veut manger (dans un premier temps, on ne vise que les nombreux

Le ompilateur doit traduire un programme soure, érit dans un langage de programmation.. donné, en un

Langage mahine.- L'éhange peut avoir lieu entre registres ou registre et ase mémoire :.

Montrer que SL 2 ( ℤ ), muni de la loi de multiplication de matrices, est un groupe non-ab´

When ν ≡ 1 , the partition funtion ounts the number of dimer ongurations of the graph G , or equivalently the number of tilings of the graph G ∗ , and the Boltzmann measure is

30 Les candidat(e)s ayant abordé cette question ont dans leur majorité bien répondu à la question en s'aidant pour cela des données de l'article (légende de la gure 3a et gure 4 ).

Lorsque l’on chauffe un solide, les molécules vibrent et prennent davantage de place, c’est la dilatation. e) Applications dans la vie courante :?. − Joint de dilatation se

Write your answer by ticking () the box in the appropriate column as in the example.?. How should the underlined letters be pronounced in the