Cours de langage d'assemblage Dominique Warnant - Jean-Luc Collinet Année académique 2006 - 2007 Ouvrages de référence (disponibles à la bibliothèque) Auto-formation à l'assembleur PC , HOFFMAN A., MicroApplication Assembleur x86, IRVINE K., Campus Press IBM PC Assembly language and Programming, ABEL P., Prentice Hall Cours de langage d'assemblage Dominique Warnant - Jean-Luc Collinet Année académique 2006 - 2007 Qu’est-ce qu’un langage d’assemblage ? Très proche de la machine Propre à un processeur Accès à toutes les possibilités de la machine Rapide à l’exécution Pourquoi étudier ce langage ? Comment fonctionne l'ordinateur ? La programmation "système" Un atout pour être précis Plan général du cours les concepts fondamentaux Représentation des informations en mémoire Description du processeur 8086 Etude de quelques instructions Petits programmes Systèmes de numération V 101 Vijf 5 Five Cinq 8 représentations différentes du nombre 5 système de numération Systèmes de numération positionnels ex.: décimal non positionnels ex.: romain 1000 Mille M Un système de numération positionnel est caractérisé par sa base et par le nombre de symboles Base = valeur attribuée à 10 Système décimal base : 10 symboles : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 4693 = 4*103 + 6*102 + 9*101 + 3*100 Système hexadécimal base : 1016 ( = 1610 ) symboles : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F A3C16 = A16*10162 + 3*10161 + C*10160 = 10*162 + 3*161 + 12*160 = 2620 Système binaire base : 102 ( = 210 ) symboles : 0, 1 1012 = 12*1022 + 02*1021 + 12*1020 = 1*22 + 0*21 + 1*20 = 5 Conversion décimal hexadécimal 5438 5424 14 E16 16 339 336 3 316 16 21 16 5 516 16 1 0 1 16 0 STOP 116 543810 = 153E16 Méthode des divisions successives par 16 Conversion décimal binaire 149 74 37 18 9 4 2 1 0 1 0 1 0 1 0 0 1 14910 = 1001 01012 Méthode des divisions successives par 2 Conversion hexadécimal décimal 1 *16 16 5 + 3 E 16 5 *16 336 + 3 *16 5424 + 14 153E16 = 543810 = 543810 Conversion hexadécimal décimal autre méthode 1 5 3 E16 = 1016 = 1610 00 E * 16 1016 10 110 14 11 + 3 * 16 1016 10 1610 48 22 + 5 * 16 1016 10 25610 1280 33 + 1 * 16 1016 10 409610 4096 543810 Conversion binaire décimal 1 0 0 1 0 1 0 1 2 *2 2+ 0 *2 4+ 0 *2 8+ 1 *2 18 + 0 *2 36 + 1 *2 74 + 0 *2 148 + 1 = 14910 Conversion binaire décimal autre méthode 1 0 1 12 102 = 210 = 1 * 10 21020 110 1 1 + 1 * 210 102 210 2 2 + 0 * 210 102 410 0 3 + 1 * 210 102 810 8 1110 Conversion hexadécimal binaire 16 = 24 Chaque chiffre hexadécimal 016 116 216 316 416 516 616 716 816 00002 00012 00102 00112 01002 01012 01102 01112 10002 916 A16 B16 C16 D16 E16 F16 4 chiffres binaires 10012 10102 10112 11002 11012 11102 11112 Conversion hexadécimal binaire A 4 8 C 16 1010 0100 1000 1100 2 Remplacer chaque chiffre hexadécimal par son équivalent binaire (en 4 chiffres) Remarque : on peut supprimer les 0 en début de nombre Exemple : 39D16 = X 0011 1001 11012 Conversion binaire hexadécimal 1010 0100 1000 11002 A 4 8 C 10100100100011002 = A48C16 Regrouper les chiffres binaires par 4 (en commençant par la fin du nombre) Remplacer chaque groupe de 4 chiffres binaires par son équivalent hexadécimal Exemple : 00 11 1001 10112 3 9 B 11100110112 = 39B16