Cours de langage d'assemblage 08/04/2017 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 Le langage d’assemblage est très proche de la machine. Cela nous projettera directement au cœur du processeur. Il y a plusieurs langages d'assemblage selon le type de processeur. On dit que le langage est propre à un processeur. Nous travaillerons essentiellement avec une émulation d’un vieux processeur 8086. (Rappeler l'évolution 386,486,…) Les concepts restent les mêmes dans le futur (présent), il n’y a que la complexité qui croît. Autant voir le facile d’abord. Les programmes que vous écrirez ne seront pas spectaculaires car, en langage d’assemblage, il faut tout faire soi-même. Par exemple, afficher un nombre à l’écran, gérer son format binaire ou décimal,… Le langage d’assemblage permet donc un accès à toutes les possibilités de la machine. C'est un grand avantage. Piloter la carte écran directement par exemple,… Proche de la machine, le langage permet une rapidité plus grande d’exécution (si le programme n’est pas trop mal écrit). Dans un programme écrit en Pascal, certaines portions de code peuvent être écrites en langage d’assemblage pour une vitesse d ’exécution plus importante. (ex. : pour l’affichage à l’écran d’une animation) Nous étudions ce langage car il aide à comprendre le fonctionnement d'un ordinateur. Egalement, il permet de comprendre les systèmes d'exploitation (Dos,…) et la programmation appelée "système" à ce niveau. Les concepts que nous aborderons seront utiles dans des programmes bien plus complexes mais également dans d’autres langages (même évolués). Etre précis en langage d’assemblage, c’est déjà gagner beaucoup pour les autres langages car la moindre imprécision est sanctionnée ici. Souvent la sanction est un arrêt complet de la machine.
Cours de langage d'assemblage 08/04/2017 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 Le langage d’assemblage est très proche de la machine. Cela nous projettera directement au cœur du processeur. Il y a plusieurs langages d'assemblage selon le type de processeur. On dit que le langage est propre à un processeur. Nous travaillerons essentiellement avec une émulation d’un vieux processeur 8086. (Rappeler l'évolution 386,486,…) Les concepts restent les mêmes dans le futur (présent), il n’y a que la complexité qui croît. Autant voir le facile d’abord. Les programmes que vous écrirez ne seront pas spectaculaires car, en langage d’assemblage, il faut tout faire soi-même. Par exemple, afficher un nombre à l’écran, gérer son format binaire ou décimal,… Le langage d’assemblage permet donc un accès à toutes les possibilités de la machine. C'est un grand avantage. Piloter la carte écran directement par exemple,… Proche de la machine, le langage permet une rapidité plus grande d’exécution (si le programme n’est pas trop mal écrit). Dans un programme écrit en Pascal, certaines portions de code peuvent être écrites en langage d’assemblage pour une vitesse d ’exécution plus importante. (ex. : pour l’affichage à l’écran d’une animation) Nous étudions ce langage car il aide à comprendre le fonctionnement d'un ordinateur. Egalement, il permet de comprendre les systèmes d'exploitation (Dos,…) et la programmation appelée "système" à ce niveau. Les concepts que nous aborderons seront utiles dans des programmes bien plus complexes mais également dans d’autres langages (même évolués). Etre précis en langage d’assemblage, c’est déjà gagner beaucoup pour les autres langages car la moindre imprécision est sanctionnée ici. Souvent la sanction est un arrêt complet de la machine.
Plan général du cours les concepts fondamentaux 08/04/2017 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
positionnels ex.: décimal Systèmes de numération 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 08/04/2017 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 16 5424 339 16 14 336 21 16 = 3 16 E16 1 16 = 5 316 STOP = 1 516 = 116 543810 = 153E16 Méthode des divisions successives par 16
Conversion décimal binaire 149 1 74 37 1 18 9 1 4 2 1 1 14910 = 1001 01012 Méthode des divisions successives par 2
Conversion hexadécimal décimal *16 16 + 5 *16 336 + 3 *16 5424 + 14 = 543810 153E16 = 543810
Conversion hexadécimal décimal autre méthode 1 5 3 E16 = E * 1610 0 + 3 * 1610 1 + 5 * 1610 2 + 1 * 1610 3 E * 10160 + 3 * 10161 + 5 * 10162 + 1 * 10163 110 14 1016 = 1610 1610 48 25610 1280 409610 4096 543810
Conversion binaire décimal 1 0 0 1 0 1 0 1 2 *2 2 + *2 4 + *2 8 + 1 *2 18 + *2 36 + 1 *2 74 + *2 148 + 1 = 14910
Conversion binaire décimal autre méthode 1 0 1 12 = 1 * 210 0 + 1 * 210 1 + 0 * 210 2 + 1 * 210 3 1 * 1020 + 1 * 1021 + 0 * 1022 + 1 * 1023 110 1 102 = 210 210 2 410 810 8 1110
Conversion hexadécimal binaire 16 = 24 Chaque chiffre hexadécimal 4 chiffres binaires 016 00002 116 00012 216 00102 316 00112 916 10012 416 01002 A16 10102 516 01012 B16 10112 616 01102 C16 11002 716 01112 D16 11012 816 10002 E16 11102 F16 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 X Exemple : 39D16 = 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 : 11 1001 10112 00 3 9 B 11100110112 = 39B16