Vous êtes sur la page 1sur 1

USTHB Architecture des Ordinateurs 2

Faculté d’Electronique et d’Informatique Licence 2ème année Informatique


Département Informatique

TD 1 : Rappels sur les instructions de tests et


branchements conditionnels et inconditionnels

1. Tests et Boucles
1. Ecrire la séquence d’instructions qui placent dans un registre la valeur absolue du contenu de ceRegistre
2. Ecrire la séquence d’instructions qui placent dans le registre BL la valeur du bit b5 duregistre AL

Soient les trois boucles :


B1 B2 B3
For (i=0; i<1000; i++) For (i=0; i<1000; i++) For (i=1; i<999; i++)
s = s + X[i] + Y[i]; if (X[i]>0) Y[i-1] = X[i] + X[i-1];
s = s + X[i] ;

3. Ecrire le code des trois boucles en Assembleur


4. Ecrivez un ensemble d’instructions en assembleur permettant de copier le contenu d’un tableau TAB1
vers le début d’un autre tableau TAB2 et ce : sans utiliser les variables TAB1 et TAB2, mais en faisant
un parcours d’adresses mémoires, avec le mode d’adressage basé indexé. On suppose que le Tableau
TAB1 a une taille MAX.

2. Accès indirect à la Pile

Ecrivez un ensemble d’instructions en assembleur permettant de copier le contenu d’un tableau TAB1 d’octets
de taille 20 vers le segment pile à partir de l’adresse logique 0100H en faisant un parcours d’adresses
mémoires, avec le mode d’adressage basé indexé.

3. Procédures
Soit le programme C suivant : Main(){ int max (int x, int y) {
int a, b, c ; b=20; c=30; if (x > y) return x ;
a= max (b,c) ; else return y;
} }
1. Ecrire le programme appelant et la fonction en assembleur en passant les paramètres par registres, puis
en les passants par la pile.

Soit le programme C suivant, qui trie un tableau de N octets signés en utilisant des procédures.
Int v[10]; tri (int v[], int n) change (int v[], int k, int m)
Main() { v[0]=100; v[1]=80; { int i, j; { int temp;
v[2]=70; v[3]=60; for (i=n-1;i>0; i--){ temp=v[k];
v[4]=55;v[5]=40;v[6]=35; for (j=i-1; j>=0 ; j--){ v[k]=v[m];
v[7]=30;v[8]=25;v[9]=10; if (v[j] >v [i]) change (v,j, i) v[m]=temp;
tri (v,10); } // fin du for j }
} } // fin du for i
}
2. Ecrire le programme principal et les deux procédures en Assembleur en passant les paramètres par pile.

Vous aimerez peut-être aussi