Université Hassan II-Mohammedia
FST Mohammedia
Dépt Génie électrique
Prof : Mme SAFI
TP Assembleur 8086 : TP2 : MANIPULATION DES TABLEAUX
Objectifs :
Ce TP vise les objectifs suivants :
Maîtriser les principes de base de la programmation en assembleur
Manipuler des octets des tables en assembleur 8086
Utiliser et comprendre la plupart des instructions d’un 8086
Partie 1 : tri sur 8bits :
Nous souhaitons, dans cette première partie, trier une liste de nombres binaires non signés
et l’organiser en ordre décroissant.
La méthode de tri est la suivante :
Etape 1 : mettre à 0 un drapeau INTER
Etape 2 : examiner chaque paire de nombres consécutifs dans la liste. Si ces deux
nombres ne sont pas dans l’ordre, les permuter et mettre INTER à 1
Etape 3 : si INTER = 1 après examen de toute la liste, recommencer à l’étape 1.
Remarque :
L’indicateur INTER est mis à 1 dès lors qu’une seule paire était dans le désordre. De ce
fait, si INTER = 0 à la fin de l’examen de toute la liste, c’est qu’elle est bien ordonnée.
IMIAE /ILIS
2010
Partie 2 : calcul du transposé d’une matrice :
Description du TP :
Dans cette partie du TP, vous aurez à réaliser la transposée d’une matrice N*N.
Votre programme doit demander à l’utilisateur d’entrer N au clavier, puis effectuer la
transposée d’un tableau en mémoire à une adresse prédéfinie. La matrice initiale est
transformée à l’endroit même où elle se situe.
Théorie :
Un tableau 2D est habituellement représenté ainsi en mémoire : les lignes se suivent une
après l’autre. La figure suivante illustre ce propos.
1
Représentation conventionnelle du Tableau :
Tableau :
L1, C1 L1, C2 L1, C3
L2, C1 L2, C2 L2, C3
L3, C1 L3, C2 L3, C3
Tableau Transposé :
L1, C1 L2, C1 L3, C1
L1, C2 L2, C2 L3, C2
L1, C3 L2, C3 L3, C3
Représentation du tableau en mémoire :
Adresse Tableau
Table 2D + 8 L3, C3
Table 2D + 7 L3, C2
Table 2D + 6 L3, C1
Table 2D + 5 L2, C3
Table 2D + 4 L2, C2
Table 2D + 3 L2, C1
Table 2D + 2 L1, C3
Table 2D + 1 L1, C2
Table 2D + 0 L1, C1
Effectuer la transposée d’une matrice consiste à échanger les valeurs aux indexes [i,j]
avec les valeurs aux indexes [j,i]. Ainsi, les éléments en haut à droite se retrouvent en bas
à gauche et vice versa. Par ailleurs, les éléments de la diagonale ne sont pas affectés par
une transposition.
Habituellement, la transposée d’une matrice A s’effectue avec deux boucles imbriquées.
Par exemple, si A est une matrice N*N avec des indices allant de 0 à N-1, la transposée de
A s’effectuera avec des boucles ayant l’allure suivante :
For (ligne = 1 ; ligne < N ; ligne++)
{
for (colonne = ligne ; colonne < n ; colonne++)
{
temp = A[ligne,colonne] ;
A[ligne,colonne] = A[colonne,ligne] ;
A[colonne,ligne] = temp ;
}
}
2
Caractéristiques du programme à remettre :
- le programme doit d’abord permettre par l’usager d’entrer un nombre en utilisant les
interruptions du bios ou du dos appropriées. La valeur entrée par l’usager n’a pas à être
validée. Vous pouvez présumer que l’usager entrera un nombre entre 1 et 9.
- la matrice qu’il faut transposer doit être à l’adresse 120h du programme
Elle est déclarée ainsi :
Matrice DB 0,1,2,….., 77, 78, 79, 80
- une fois la matrice transposée, le programme doit demander une nouvelle
dimension de matrice à l’usager et s’exécuter de nouveau dans une boucle sans fin.
- Le programme que vous remettrez est un fichier texte seul compatible avec
EMU8086.
- Le fichier texte remis doit contenir des commentaires.
3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !