\documentstyle{book}\pagestyle{empty}

\textheight 250mm
\textwidth 160mm
\hoffset -22mm
\voffset -24mm

\begin{document}\pagestyle{empty}
\noindent
\begin{tabular}{l c r}
\hline
Institut Galil\'ee - Universit\'e Paris 13  & \qquad\qquad  & Informatique\\
DEUG STPI 1\`ere ann\'ee     & \qquad\qquad & Semaine du 18 octobre 1999\\
\hline
\end{tabular}



\bigskip\bigskip

\begin{center}
{\Large  TP2}\\
{Un langage simple pour un processeur simplissime : MAMIAS}
\end{center}

\bigskip\bigskip
{\large Prol\'egom\`enes\footnote{prol\'egom\`enes (masculin pluriel, du grec $\pi\rho o
\lambda\epsilon\gamma$\'o$\mu \epsilon\nu\alpha$) = avant-propos}. Fonctionnement.}

\bigskip\bigskip
MAMIAS est un langage illustrant le codage des instructions pour un
proces\-seur ``simple'' (confer TD 2 sur les cycles d'ex\'ecutions).
Un programme MAMIAS est une suite de mots de 8 bits,
les trois premiers bits codant l'instruction, les 5 suivants codant
une valeur.
On rappelle le tableau suivant
\bigskip


\begin{tabular}{|l|l|l|}
\hline
000 & INIT $x$ & Acc$\leftarrow x$\\
\hline
001 & CHARGE $n$ & Acc$\leftarrow (n)$\\
\hline
010 & RANGE $n$ & $(n)\leftarrow$ Acc\\
\hline
011 & ET $n$ & Acc $\leftarrow$ Acc ET $(n)$ (op\'eration binaire)\\
\hline
100 & SAUTE $n$ & si Acc$=0$ alors aller \`a l'adresse $n$\\
\hline
101 & ADD $n$ & $(n) \leftarrow$ Acc$+(n)$\\
\hline
110 & DEC $x$ & \begin{minipage}{7cm} d\'ecale le contenu de Acc de $x$ positions:\\
-vers la gauche si $x\geq 0$\\
-vers la droite si $x<0$\\
\qquad
\end{minipage}\\
\hline
111 & STOP & arr\^ete l'ex\'ecution \\
\hline
\end{tabular}

Ces quelques commandes (les ``briques'' de base) permettent 
de simuler tous les programmes (si on fait abstraction de la
limitation de MAMIAS \`a 32 cases ou ``mots'' m\'emoires). 
Le contenu de la case num\'ero $n$ est not\'e $(n)$.


\bigskip\bigskip
{\large Utilisation du simulateur MAMIAS.}
Il existe deux versions du simulateur MAMIAS.\\
--\qquad  La version alphanum\'erique simule l'ex\'ecution d'un programme MAMIAS en
affichant, pour chaque instruction ex\'ecut\'ee, l'instruction d\'ecod\'ee et
la valeur de l'accumulateur. Le simulateur MAMIAS.exe, ex\'ecute les
instructions (codes binaires) situ\'es dans le fichier memoire.txt et modifie
ce fichier en cons\'equence (si le programme MAMIAS modifie des valeurs en
m\'emoire, le fichier sera aussi modifi\'e). En fin d'ex\'ecution, il est
possible d'obtenir un dump de la m\'emoire, avec interpr\'etation des
diff\'erents codes. Le fichier g\'en\'er\'e s'appelle dump. Le texte du
programme MAMIAS contenu dans le fichier memoire.txt sera saisi avec WordPad
ou NotePad. Le fichier dump pourra se lire avec la m\^eme application. 
Attention, le nom d'extension txt n'appara\^{\i}t pas sous le gestionnaire 
de fichiers.\\
--\qquad La version graphique est disponible en lan\c cant
Mamias-Graph. Cette version n\'ecessite aussi un fichier donnant l'\'etat
initial de la m\'emoire et comprenant le programme MAMIAS \`a ex\'ecuter.

\bigskip\bigskip

Pour pouvoir utiliser ces programmes~:\\
1. connecter le r\'epertoire r\'eseau Bdc/Logiciels sur le lecteur F: (pour
cela, utiliser $<$connecter un lecteur r\'eseau$>$ dans le menu li\'e \`a
$<$Voisinage r\'eseau$>$)\\
2. recopier dans votre r\'epertoire personnel le r\'epertoire F:$\backslash$ Mamias (avec
la souris par example).\\
3. Dans ce r\'epertoire Mamias de votre r\'epertoire personnel se trouvent
tous les fichiers dont vous avez besoin et que vous pouvez modifier si n\'ecessaire.

\newpage
{\large Exercice 1. Compr\'ehension.}\\
{Question 1. Une petite addition...}\\
Saisir le progamme MAMIAS suivant, l'ex\'ecuter et afficher le contenu de la
m\'emoire apr\`es ex\'ecution. Que fait ce programme~?\\
0:\qquad 00100101 \qquad CHARGE 5\\
1:\qquad 01000111 \qquad RANGE 7\\
2:\qquad 00100110 \qquad CHARGE 6\\
3:\qquad 10100111 \qquad ADD 7\\
4:\qquad 11111111 \qquad STOP\\
5:\qquad 00110011 \\ 
6:\qquad 01101001 \\ 
7:\qquad 01100110 \\

\noindent
{Question 2. Un programme ``mutant''.}\\
Saisir le progamme MAMIAS suivant, l'ex\'ecuter et afficher le contenu de la
m\'emoire apr\`es ex\'ecution. Quel programme obtient-on finalement~?\\
0:\qquad 00100101 \qquad CHARGE 5\\
1:\qquad 01000110 \qquad RANGE 6\\
2:\qquad 00100111 \qquad CHARGE 7\\
3:\qquad 11000001 \qquad DEC 1\\
4:\qquad 01000101 \qquad RANGE 5\\
5:\qquad 11111111 \qquad STOP \\ 
6:\qquad 00111001 \\ 
7:\qquad 01010100 \\
8:\qquad 00001111 \\



\bigskip\bigskip
\noindent
{Question 3.}\\
Utilisez MAMIAS.exe pour d\'eterminer ce que contiennent
l'accumulateur et le mot m\'emoire (5) apr\`es ex\'ecution des
instructions suivantes\\
\noindent
0:\qquad 00000011\\
1:\qquad 01000101\\
2:\qquad 00011101\\
3:\qquad 10100101\\
4:\qquad 11100000\\




\bigskip\bigskip
{\large  Exercice 2. Programmation.}
\bigskip\bigskip

a. \'Ecrivez un programme MAMIAS qui teste le signe de la donn\'ee
cod\'ee dans le mot m\'emoire (9). Ce programme doit coder la valeur 1
dans le mot m\'emoire (10) si (9) est positive ou nulle  et 0 sinon.


\bigskip\bigskip
b. \'Ecrivez un programme qui r\'ealise la soustraction entre donn\'ee
cod\'ee dans le mot m\'emoire (10) et celle cod\'ee dans le mot
m\'emoire (11) (on suppose que cette valeur est positive ou nulle).
Le r\'esultat doit \^etre cod\'e dans le mot m\'emoire (12).

\bigskip

\end{document}