Structure Machine
Série 6
La machine pédagogique

Télécharger en PDF



Exercice 1

  1. Soit l’instruction qui se trouve à l’adresse 300 :
    LOAD  200, IMM
  2. Donner le contenu de l’Accumulateur après l’exécution de chacune des instructions suivantes :
    LOAD  200, IND
    LOAD  200, XRI (XRI registre d’index)
    Nous avons :

    Adresse Contenu
    100 a
    101 d
    200 100
    202 b
    XRI 2

Solution


Exercice 2

  1. Donner le contenu de l’Accumulateur après l’exécution de chaque instruction.
  2. Que fait ce programme ?
  3. Quelle est la valeur stockée dans F ?
LOAD   101, D
MUL     201, IND
MUL     102, D
STORE Y, D
LOAD   303, IND
MUL     202, D
SUB      Y, D
STORE  F, D
             
Adresse Contenu
101 A
102 4
201 302
202 B
302 C
303 202

Solution


Exercice 3

Etant donnés les contenus des registres et des mémoires suivants :

(XR1)=1  ; (XR2)=2 ;
(1000)=0 ; (1001)=1 ;
(2000)=2 ; (2001)=3 ;
(3000)=4 ; (3001)=5 ;
(0)=1000

XR1 et XR2 sont des registres d’index. Les valeurs entre parenthèses représentent les adresses mémoire.

  1. Indiquer le contenu de l’Accumulateur après chacune des opérations suivantes :
    LOAD 3000, XR1
    LOAD 999, XR2
    LOAD 1000, IND
    LOAD 2, IMM
    LOAD 1000, D
  2. Quelle est la valeur de F après l’exécution du programme ci-dessous :
    LOAD   3000, D
    ADD     2000, XR1
    SUB      5, IMM
    MUL     3001, D
    DIV       2000, D
    ADD     1000, D
    SUB      0, IMM
    STORE F, D

Solution


Exercice 4

Etant donné une machine dont l’architecture est donnée par la figure suivante :

  1. Réaliser les instructions suivantes à l’aide seulement des opérations étudiées en cours.
    Utiliser l’adressage direct.
    a) 1/lire A ;
    2/ lire B ;
    3/ C := A-B ;
    4/ R := (A+B)- C ;
    5/ écrire R .
    b)  1/ lire A ;
    2/ lire B ;
    3/ A := A2 + A*B + B2 ;
    4/ Ecrire A.
  2. Sachant que A = 10 et B = 5 et qu’un Compteur Ordinal (CO) a été ajouté à l’unité de traitement décrite précédemment.
    1. Quelle adresse contient le Compteur Ordinal à la fin de l’exécution des instructions (a) ?
    2. Lors du déroulement des instructions (b), quelles sont les différentes valeurs prises par l’Accumulateur ?

Solution


Exercice 5 (Rattrapage juin 2015)

La figure ci –après représente un carré de coté C surmonté d’un demi cercle :

  1. Donner la formule qui calcule la surface de cette figure.
  2. Ecrire le programme Assembleur correspondant

La valeur de PI (3.14) se trouve en mémoire centrale,
La valeur de C se trouve dans le périphérique d’entrée.
N’utiliser aucune variable autre que PI et C .

Solution


Exercices complémentaires

Exercice 6

Donner le programme Assembleur équivalent à chacun des programmes C ci-dessous. Vous utiliserez, en plus, la suite des instructions de branchement prédéfinies dans le tableau.

a.
i=0;
While ( i < 5 ) {
  i++;
  printf("%d",i);
}
Solution
b.
S=0;
for ( i=0;i≤ 3;i++ )
  S= S+i;
printf("%d",S);
Solution
c.
scanf("%d %d %d",&a,&b,&c);
if ( a > b && a == c )
{ a= a+b; b=c; }
else
{ a= b+c; c=b; }

printf("%d %d %d",a,b,c);
Solution
d.
scanf("%d",&a);
b=0;
switch(a)
{ case 1 : b= a; break;
  case 2 : b= b+1; 
  case 2 : b= b+3; break;
  otherwise : b= b+4;
}
printf("%d",b);
Solution
e.
T[0]= 22;
T[1]= 14;
T[2]= 67
T[3]= T[0]+ T[1];
T[4]= 0;
for ( i=0;i≤ 3; i++ )
  T[4]= T[4]+T[i];
printf("%d",T[4]);
Solution
f.
a=10;b=2;d=6;
c= f(a,b);
e= f(c,d);
printf("%d",e);

int f(int x, int y)
{ return x+y; 
}
Solution

 


Exercice 7

Donner le programme Assembleur qui permet d'afficher la solution d'une équation du premier degré Ax+B = C.

On suppose que A, B, C sont donnés par l'utilisateur et que A ≠ 0.


Exercice 8

Donner les cycles d'exécution et les micro-opérations des instructions Assembleur suivantes :

100 STORE 200,D
101 STORE 200,IND

Avec : ACC = 20; @200 = 300; @300 = 40


Exercice 9

1. L'instruction Assembleur BP @ permet de rediriger l'exécution du programme à l'instruction d'adresse @ si le contenu de l'accumulateur > 0 (Branch if Positive). Sinon, le programme suit son exécution à l'instruction suivante. Donner les micro-opérations du cycle Exécution correspondantes.

2. Faire la même chose avec :

BN @ : Branchement si ACC < 0
BZ @ : Branchement si ACC = 0
BPZ @ : Branchement si ACC <= 0
BNZ @ : Branchement si ACC <= 0
BR @ : Branchement inconditionnel à @

3. Ecrire un programme Assembleur qui permet d'afficher les valeurs comprises entre 20 et 500 en utilisant l'une des instructions ci-dessus. On peut egalement utiliser l'instruction HALT qui permet d'arrêter l'exécution d'un programme.


Exercice 10

Soit le programme assembleur ci-dessous. Donner les étapes d'exécution de chacune de ses instructions.

100 LOAD 106, D
101 MUL 107, IND
102 ADD 10, IMM
103 TORE 108, D
104 LOAD 107, IND
105 SUB 109, D
106 2
107 109
108 0
109 4

Solution


Exercice 11

Donner le programme Assembleur qui permet de calculer la factorielle F d'un nombre naturel N. Pour rappel, la factorielle d'un nombre est calculée comme suit :

F = N ! = N * (N-1) * (N-2) * .... * 2 * 1 pour N >= 1. Si N=0, 0 ! = 1.

Solution