Université hassan II Mohammedia

publicité
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
L2, C1 L2, C2
L3, C1 L3, C2
:
L1, C3
L2, C3
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
Téléchargement