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