INF2170 Organisation des ordinateurs et assembleur
Examen Intra Automne 2014
Vendredi 24 octobre Durée 2 heures
Aucun document n'est autorisé. L'usage de la calculatrice est interdit. Répondez et rendez seulement le formulaire (dernière page). L'annexe est détachable.
Les questions faisant apparaître le symbole ♣ peuvent présenter plusieurs bonnes réponses. Les autres ont une unique bonne réponse.
Chacune des 20 questions vaut 5 points. Des points négatifs pourront être aectés à de très mauvaises réponses.
1 Structure et fonctionnement d'un ordinateur
Question 1
Soit une donnée ayant 100 valeurs possibles. Si l'on désire utiliser une nombre xe de bits pour représenter cette donnée, combien de bits sont minimalement nécessaires ?
A 1 bit B 5 bits C 7 bits
D 8 bits E 32 bits F 50 bits
G 64 bits H 10 octets
I 32 octets
J 64 octets K 1 kilo octet
L 1 mega octet Question 2
Quelle est la 3eme des quatre étapes de l'exécution d'un instruction par un processeur Pep/8 A Écrire le résultat à l'écran
B Décoder le spécicateur d'opérande C Écrire le résultat en mémoire D Décoder l'instruction
E Aller chercher l'instruction en mémoire F Réinitialiser le registre d'index
G Aller chercher l'opérande en mémoire H Incrémenter le compteur ordinal
2 Instructions et code machine Pep/8
Question 3♣ Parmi les instructions Pep/8 suivantes, indiquez toutes celles qui modient le bit d'état V débor- dement ? Indiquez toutes les bonnes réponses.
A STr B STOP
C LDr D NEGr
E CPr F ADDA
G CHARO H ASLA
Question 4♣ Que fait la directive Pep/8 .END ? Indiquez toutes les bonnes réponses.
A Réserve un seul octet, initialisé à 0 B Marque la n du code assembleur C Réserve aucun octet
D Lorsqu'exécuté, ache un message d'erreur à l'écran
E Sépare le code source du programme de celui du système d'exploitation F Réserve autant d'octets que nécessaire pour remplir la mémoire de 0 G Force l'arrêt du processeur
H Aucune de ces réponses n'est correcte.
Question 5♣ Soit le code machine Pep/8 suivant. Quelles sont les armations qui sont vraies? Indiquez toutes les bonnes réponses.
DECI x,d DECO x,d STOPx: .BLOCK 2 .END
A Le code machine généré fait 9 octets
B Le STOP est superu et pourrait être supprimé C Ce programme ache toujours 2
D Le dernier octet du code machine généré est 02 (hexadécimal) E Le premier octet du code machine est 32 (hexadécimal) F la valeur du symbole x est 07 (hexadécimal)
G Ce programme contient 3 instructions et 2 directives H Aucune de ces réponses n'est correcte.
3 Programme mystère
Soit le programme mystère suivant:
LDA 0,i
m: CHARI c,d
LDBYTEA c,d
x: CPA '\n',i
BREQ e CPA '_',i BREQ u
o: CHARO c,d
BR m
u: CHARI c,d
LDBYTEA c,d CPA 'a',i BRLT s CPA 'z',i BRGT s
ADDA 'A',i STBYTEA c,d
BR o
s: CHARO '_',i
BR x
e: STOP
c: . BLOCK 1
. END
Question 6 Qu'ache-il lorsque l'on saisit la ligne toto dans l'input ? A Il part en boucle innie
B Il ache n'importe quoi C t0t0
D Toto
E Il n'ache rien du tout F 1234
G toto H 190
I 1t1o1t1o J TOTO K otot
L 116111116111 Question 7 Qu'ache-il lorsque l'on saisit la ligne to_to dans l'input ?
A TOTO B ToTo C 234
D Il part en boucle innie E Il n'ache rien du tout F toT0
G 11121314 H to_TO
I To_To J to_t0 K toTo
L Il ache n'importe quoi
Question 8♣ Qu'ache-il lorsque l'on saisit la ligne _t_o__t_o___T_O__ dans l'input ? A _T_O__T_O__T_O__
B TO_TO___T_O__
C Il ache n'importe quoi D TO_TO___T_O__
E _T_O__T_O__T_O F TO_TO___t_o__
G 11a0b110c4d
H t_O__T_O__T_O I TO_TO__TO_
J _T_O__T_O_TO__
K Il part en boucle innie L TO_TO___T_O_
M Aucune de ces réponses n'est correcte.
4 Arithmétique des ordinateurs
Question 9 ♣ Parmi les représentations suivantes, quelles sont celles du nombre 15(16) (15 hexadécimal) ? Indiquez toutes les bonnes réponses.
A 1111(2)
B 11001(2)
C 10101(2)
D 21(10)
E 37(10)
F 21(8)
G 0F(16)
H 25(8)
Question 10♣ Parmi les séquences d'instruction Pep/8 suivantes, quelles sont celles qui positionnent le registre accumulateur (A) à la valeur 0x8765 ? Indiquez toutes les bonnes réponses.
A LDA 0xF564,iADDA 0x9101,i B LDA 0x0566,iORA 0x8625,i
C LDA 0x1AAB,iSUBA 0x9346,i D LDA 0x789B,iNEGA
E LDA 0x641F,iADDA 0x2346,i
F LDA 0x7650,iASLA
Question 11♣ Parmi les séquences d'instructions Pep/8 suivantes, quelles sont celles qui positionnent le code condition de zéro (Z) à 1 ? Indiquez toutes les bonnes réponses.
A LDA 0x0FFF,iADDA 0xF001,i B LDA 10,i
C LDA 0x0000,i D LDA 0x8000,iADDA 0x8001,i
E LDA 10,iCPA 10,i F LDA 0x8000,iNEGA
5 Modes d'adressage
Soit le listing suivant :
--- Object
Addr code Symbol Mnemon Operand Comment
---
0000 380025 DECO t,i
0003 500020 CHARO ' ',i
0006 390025 DECO t,d
0009 500020 CHARO ' ',i
000 C 3 A0025 DECO t,n
000 F 500020 CHARO ' ',i
0012 C80004 LDX 4,i
0015 3 D0025 DECO t,x
0018 500020 CHARO ' ',i
001 B C90025 LDX t,d
001 E 3 DFFFD DECO -3,x
0021 500020 CHARO ' ',i
0024 00 STOP
0025 0027 t: . ADDRSS u
0027 0026 u: . WORD 38
0029 0024 . WORD 36
002 B 0022 . WORD 34
002 D . END
---
Symbol table
---
Symbol Value Symbol Value
---
t 0025 u 0027
---
Question 12 Quel est le premier nombre aché (DECO t,i) ? A -2
B -1
C 0 D 1
E 2 F 3
G 4 H 7
I 24 J 25
K 26 L 27
M 28 N 29
O 34 P 35
Q 36 R 37
S 38 T 39 Question 13 Quel est le second nombre aché (DECO t,d) ?
A -2 B -1
C 0 D 1
E 2 F 3
G 4 H 7
I 24 J 25
K 26 L 27
M 28 N 29
O 34 P 35
Q 36 R 37
S 38 T 39 Question 14 Quel est le troisième nombre aché (DECO t,n) ?
A -2 B -1
C 0 D 1
E 2 F 3
G 4 H 7
I 24 J 25
K 26 L 27
M 28 N 29
O 34 P 35
Q 36 R 37
S 38 T 39 Question 15 Quel est le quatrième nombre aché (DECO t,x) ?
A -2 B -1
C 0 D 1
E 2 F 3
G 4 H 7
I 24 J 25
K 26 L 27
M 28 N 29
O 34 P 35
Q 36 R 37
S 38 T 39 Question 16 Quel est le cinquième nombre aché (DECO -3,x) ?
A -2 B -1
C 0 D 1
E 2 F 3
G 4 H 7
I 24 J 25
K 26 L 27
M 28 N 29
O 34 P 35
Q 36 R 37
S 38 T 39
6 Programmation
Soit le programme incomplet suivant dont l'objectif est d'acher le nombre d'occurrences des dix premiers entiers (de 0 à 9) saisis au clavier.
lire : DECI n,d
LDX n,d
CPX 0,i
BRLT ecrire
???? ; <-- TROU 1
???? ; <-- TROU 2
BR lire
;ecrire : LDX 0,i
loop : ???? ; <-- TROU 3 DECO tab ,x
CHARO ' ',i ADDX 2,i
BR loop
fin : STOP
;
n: . BLOCK 2
tab : ???? ; <-- TROU 4 . END
Question 17 Que faut-il mettre à la place du trou 1 ? A CPX tab,xBRGE ecrire
B CPX 10,iBRLE ecrire C CPX 20,iBRLE ecrire
D CPX 20,iBRNE ecrire E CPX tab,iBRLE ecrire F CPX tab,iBRNE ecrire
G CPX tab,iBREQ ecrire H CPX tab,xBRNE ecrire I CPX tab,xBREQ ecrire
J CPX 10,iBREQ ecrire K CPX 20,iBRGE ecrire L CPX 10,iBRGE ecrire Question 18 Que faut-il mettre à la place du trou 2 ?
A
ASLXLDA tab,x ADDX 2,i STA tab,x
B
LDA n,d ASLASTA tab,x ADDA 1,i
C
LDA tab,x ASLASTA tab,x ADDX 2,i
D
LDA tab,x ASLASTA tab,x ADDX 1,i
E
LDA n,d ASLASTA tab,x ADDA 2,i
F
LDA n,d ASLASTA tab,x ADDX 2,i
G
ASLXLDA tab,x ADDX 1,i STA tab,x
H
ASLXLDA tab,x ADDA 1,i STA tab,x Question 19 Que faut-il mettre à la place du trou 3 ?
A CPX tab,xBRGE fin B CPX 10,iBRGE fin
C CPX tab,xBRLE fin D CPX 20,iBRLE fin
E CPA tab,xBRGE fin F CPX 10,iBRLE fin
G CPX 20,iBRGE fin H CPX tab,xBRLE fin
Question 20 Que faut-il mettre à la place du trou 4 ? A .EQUATE 40
B .BLOCK 2 C .BLOCK 40
D .EQUATE n E .BLOCK tab F .EQUATE 2
G .BLOCK 10 H .EQUATE 20
I .ADDRSS n
J .ADDRSS tab K .BLOCK 20
L .EQUATE 10
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 E F G H I J K L Question 2 : A B C D E F G H
Question 3 : A B C D E F G H Question 4 : A B C D E F G H Question 5 : A B C D E F G H
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 I J K L M
Question 9 : A B C D E F G H Question 10 : A B C D E F Question 11 : A B C D E F
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 I J K L M N O P Q R S T
Question 17 : A B C D E F G H I J K L Question 18 : A B C D E F G H
Question 19 : A B C D E F G H
Question 20 : A B C D E F G H I J K L
1 Annexes (détachable)
1.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
1.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.
1.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'
1.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]
1.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)
X 1 Registre d'index 2 octets (un mot) PP Pointeur de pile (SP) 2 octets (un mot) CO Compteur ordinal (PC) 2 octets (un mot)
Spécicateur d'instruction 1 octet
Spec Spécicateur d'opérande 2 octets (un mot)