2
DUT Informatique Architecture des ordinateurs Ann´ ee 2012/2013 TP 4 et 5 - Assembleur x86 - Exercice 1. Fonctions 1. ´ Ecrire une fonction sans param` etre qui affiche ”Bonjour”. 2. ´ Ecrire une fonction qui prend un param` etre entier et l’affiche. 3. ´ Ecrire une fonction qui prend deux param` etres (un entier n et un caract` ere c) et qui affiche n fois le caract` ere c. 4. On veut un programme qui lit un entier positif n au clavier et affiche tous les entiers multiples de n inf´ erieurs ` a 1000. Par exemple si le nombre lu est 10, le programme affichera : 1000 990 980 970 ... 40 30 20 10. (a) ´ Ecrire une premi` ere version du programme qui : – sauvegarde la valeur de n dans une case m´ emoire, – utilise une fonction aff mul qui prend un param` etre a et affiche a suivi d’un blanc si a est multiple de n. – fait une boucle (dans le main) qui, pour chaque entier i entre 1 et 1000 appelle aff mul. (b) ´ Ecrire une deuxi` eme version du programme qui utilise une fonction aff mul2 qui prend deux param` etres n et a et affiche a suivi d’un blanc si a est multiple de n. (c) N’y a-t-il pas plus simple ? 5. ´ Ecrire une fonction ecursive qui prend 2 param` etres a et n et calcule (renvoie dans eax) la valeur a n . Exercice 2. Tableaux 1. D´ eclarer un tableau d’entiers et faire afficher son contenu. 2. D´ eclarer un tableau de caract` eres et faire afficher son contenu. 3. Pour ´ ecrire une fonction permettant d’afficher un tableau d’entiers, quels sont les pa- ram` etres n´ ecessaires ? 4. ´ Ecrire une fonction affiche tab int qui affiche un tableau d’entiers. 5. Faire afficher le maximum du tableau. 6. ´ Ecrire une fonction max qui prend en param` etre l’adresse d’un tableau d’entiers (dwords) et sa longueur et qui renvoie dans le registre eax le maximum du tableau. Tester vos fonctions sur le tableau : 33 7 491 22 5 660 3 3 50 21 . 7. ´ Ecrire (et tester) une fonction my print string qui fait la mˆ eme chose que print string, sans utiliser print string . 8. ´ Ecrire et tester un programme (pas une fonction) qui, ` a partir d’une chaˆ ıne de caract` eres src place dans dst la chaˆ ıne obtenue en doublant tous les caract` eres de src (penser ` a eserver de l’espace pour dst). Exemple : “Bonjour !” devient “BBoonnjjoouurr ! !”. 9. F ´ Ecrire un programme (pas une fonction) qui renverse l’ordre des cases d’un tableau de caract` eres src dans un autre tableau dst (penser ` a r´ eserver l’espace pour dst). Exemple : a b c d e f g devient g f e d c b a . 1

TP 4 et 5 - Assembleur x86igm.univ-mlv.fr/~pivoteau/ARCHI/TD/archi_tp4et5.pdf · DUT Informatique Architecture des ordinateurs Ann ee 2012/2013 TP 4 et 5 - Assembleur x86 - Exercice

  • Upload
    lyngoc

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

DUT Informatique Architecture des ordinateurs Annee 2012/2013

TP 4 et 5 - Assembleur x86 -

Exercice 1. Fonctions

1. Ecrire une fonction sans parametre qui affiche ”Bonjour”.

2. Ecrire une fonction qui prend un parametre entier et l’affiche.

3. Ecrire une fonction qui prend deux parametres (un entier n et un caractere c) et quiaffiche n fois le caractere c.

4. On veut un programme qui lit un entier positif n au clavier et affiche tous les entiersmultiples de n inferieurs a 1000. Par exemple si le nombre lu est 10, le programme affichera :1000 990 980 970 ... 40 30 20 10.

(a) Ecrire une premiere version du programme qui :– sauvegarde la valeur de n dans une case memoire,– utilise une fonction aff mul qui prend un parametre a et affiche a suivi d’un

blanc si a est multiple de n.– fait une boucle (dans le main) qui, pour chaque entier i entre 1 et 1000 appelleaff mul.

(b) Ecrire une deuxieme version du programme qui utilise une fonction aff mul2 quiprend deux parametres n et a et affiche a suivi d’un blanc si a est multiple de n.

(c) N’y a-t-il pas plus simple ?

5. Ecrire une fonction recursive qui prend 2 parametres a et n et calcule (renvoie dans eax)la valeur an .

Exercice 2. Tableaux

1. Declarer un tableau d’entiers et faire afficher son contenu.

2. Declarer un tableau de caracteres et faire afficher son contenu.

3. Pour ecrire une fonction permettant d’afficher un tableau d’entiers, quels sont les pa-rametres necessaires ?

4. Ecrire une fonction affiche tab int qui affiche un tableau d’entiers.

5. Faire afficher le maximum du tableau.

6. Ecrire une fonction max qui prend en parametre l’adresse d’un tableau d’entiers (dwords)et sa longueur et qui renvoie dans le registre eax le maximum du tableau.

Tester vos fonctions sur le tableau : 33 7 491 22 5 660 3 3 50 21 .

7. Ecrire (et tester) une fonction my print string qui fait la meme chose que print string,sans utiliser print string .

8. Ecrire et tester un programme (pas une fonction) qui, a partir d’une chaıne de caracteressrc place dans dst la chaıne obtenue en doublant tous les caracteres de src (penser areserver de l’espace pour dst).

Exemple : “Bonjour !” devient “BBoonnjjoouurr ! !”.

9. F Ecrire un programme (pas une fonction) qui renverse l’ordre des cases d’un tableau decaracteres src dans un autre tableau dst (penser a reserver l’espace pour dst).

Exemple : a b c d e f g devient g f e d c b a .

1

Exercice 3. Variables locales

1. Traduire cette fonction C en assembleur (utiliser des variables locales pour j, k et l) :

int myst( int n ){

int i, j, k, l;

j = 1;

k = 1;

for ( i = 3; i <= n; i++ ) {

l = j + k;

j = k;

k = l;

}

return k;

}

2. Que calcule cette fonction ? Verifier que le programme assembleur donne bien le resultatattendu.

3. Ecrire et tester une fonction qui, etant donne un mot (une chaıne de caracteres) sur l’alpha-bet {a, b, c}, renvoie le nombre de a (respectivement de b, de c) dans eax (respectivementdans ebx, dans ecx). Utiliser des variables locales pour compter les lettres.

Exercice 4. RevisionsFaire les exercices de l’examen de l’an passe.

2