Exercice 1.

On appele l'entrée e et les sorties s0, s1 et s2.

Partie a.

e s2 s1 s0 | s2' s1' s0' 
------------------------
0 0  0  0  |  0   0   1
0 0  0  1  |  0   1   1
0 0  1  0  |  1   1   0
0 0  1  1  |  0   1   0
0 1  0  0  |  0   0   0
0 1  0  1  |  1   0   0
0 1  1  0  |  1   1   1
0 1  1  1  |  1   0   1
1 0  0  0  |  0   0   1
1 0  0  1  |  0   1   0
1 0  1  0  |  0   1   1
1 0  1  1  |  1   0   0
1 1  0  0  |  1   0   1
1 1  0  1  |  1   1   0
1 1  1  0  |  1   1   1
1 1  1  1  |  0   0   0

Partie b.

Exercice 2.

Partie a.

Partie b.

cycle 1: 5, (7), 3, 9
cycle 2: X, 6, 1

Exercice 3.

Il y a plusieurs possibilités. L'appelé trouve argument i à l'adresse bp-i et la variable locale j par exemple à l'adress sp+(j-1).
appelant                               appelé
-------                                ------

      ...
      push rta
      copyreg sp bp
      calculer arg1 dans r0
      push r0
      calculer arg2 dans r0
      push r0
      ...
      calculer argn dans r0
      push r0
      jal sub
                                       sub:  sub m sp
                                             ...
                                             copyreg bp sp
                                             ret
rta:  continuer le calcul

Exercice 4.

Étape 1, voici le bistable D:

Étape 2, remplacer les bascules par des portes. Attention à utiliser la bonne sortie.

Étape 3, remplacer les portes non-ou par des portes et et des inverseurs. Une porte non-ou est équivalente à une porte et dont toutes les entées sont inversées.

Étape 4, Simplification. On associe les inverseur avec les sorties des portes et autant que possible.

Étape 5, On peut simplifier encore plus si l'on réalise que les deux sorties d'une bascule ont toujours des valeurs complémentaires.