Sommaire: cours informatique apprenez à programmer en assembleur 80X86
1Introduction
2Présentation
3Historique
4Précisions sur ce document
5Pourquoi apprendre l’assembleur ?
6Les registres
7registres généraux (8, 16, 32 bits)
8registres de segment (16 bits)
9registres de déplacement (16, 32 bits)
10Le pointeur d’instruCtion (16, 32 bits)
11Le registre de drapeaux (32 bits)
12Les AUTRES registreS
13La mémoire
14Les modes d’adressage de la mémoire
15Les instructions de BASE
16L’Affectation
17SAut
18Affectation conditionnelle
19Les entrées sorties
20Traiter des adresses
21Calcul arithmétique
22Opérations logiques
23Traiter des bits
24Les fonctions
25Les interruptions
26Les rotations
27Les déplacements
28LeS drapeauX
29Divers
30Attention
31Les instructions plus évoluées
32Les boucles
33Instructions sur les chaines de caractere
34Les conversions
35Deux autres types
36Ce que je ne détaillerai pas
Spécifique au mode protégé
Divers
37Les interruptions
38principe d’utilisation
39Comment se déroule une interruption
40Les interruptions les plus importantes
INT 05h
INT 10h
INT 15h
INT 17h
INT 21h
41INT 21h
Généralités
INT 33h
42Debug
43Les paramètres des commandes
44Les COMMANDES
Ecrire
Lire
Travailler sur des blocs
Travailler avec les ports
Lecture et écriture dans unfichier
Débugguage
Divers
45EMploidedebug Pourfaire un dumpdela mémoire
46Utilisationdedebug pourCOMPILER de l’assembleur
47Réaliser unformatage bas niveau avec debug
48MASM
49UtilisationdeMASM
50Structure d’un programme.COM
51Les constantes
52Les variables
53Les opérandes
54Le coeurdu programme
55Le ASSUME
56Les macros
Comparaisonavec les procédures
Déclaration
Utilisation
Les tests
Petit exemple
57portions de programmes
58L’écran
Ecrire une chaîne
Effacer l’ecran
Ecrire en utilisantla mémoire vidéo
59Le système
Voir les paramètres passés au programme
Retourneruncode d’erreurà DOS
Rebooter l’ordinateur à chaud nemarche pas dans une fenêtre DOS
Rebooter l’ordinateur à froidne marche pas dans une fenêtre DOS
Planter l’ordinateur
60Le BUZZER
Emettreunbip
Emettreunefréquence
61Le clavier
Viderle buffer
Attendrel’appui surunetouche
Voir si une touche a étéappuyée
62L’horloge
Connaîtrela date
Connaîtrel’heure
Attendre10secondes
AttendreBX/18,2secondes
63Les disques
Voir si unlecteur estprêt
Savoirsur quel disque ona booté
Connaîtrele type dudisque par défaut
64Un exemple complet
65Un TSR(Terminateand StayResident)
66Rediriger des interruptions
67Imprimer
68Afficher lecontenud’unfichier
69Divers
70Unpeu de vidéo
71Les modes vidéo
72Passeren mode VGA
73Ecrire un pixel
74Attendrele retour dufaisceau d’électrons de l’écran(retour page)
75ConnaîtrE la palette
76affecterla palette
77Effacer l’écran
78Afficher un point
79l’assembleur et le C
80Exemple
81Utiliser les interruptions DOS
82Voirla valeur présenteà uneadresse
83Rediriger une erreur critique
84Accéder à la table des vecteurs d’interruption
85Spécifiqueà Watcom
Definir une fonction assembleur dans le codeCPP
Importer une fonction depuis un fichierASM
86Divers
87Plus rapide
88comment connaitre si le CPU est 8086, 80286
89Pas d’effet de bord
90Conclusion
91Couverture du sujet
92Thèmes non abordés.
93Où approfondir ses connaissances
Extrait du cours informatique apprenez à programmer en assembleur 80X86
1 INTRODUCTION:
2 PRÉSENTATION:
Sansobjet.
3 HISTORIQUE:
Sansobjet.
4 PRÉCISIONSSUR CEDOCUMENT:
L’assembleur 80x86est un domaine très vaste.
Il y a les instructions spécifiquesau8086,au80286, 80386, 80486, Pentium, les instructions MMX, …
Pournepas vousembrouiller entreces différentesversions,je vaisfaire ce qui suit: je présente ce quimarchesur un 386
Donc,commeconséquences:
· je nevais plus parler denuméro de processeur: je nevous embrouillerai pas
· les programmes que vous ferez à l’aide de cette documentation ne seront pas optimisés pour un 80486 ou 586
· les programmes que vous ferez à l’aide de cette documentation ne marcheront peut être pas sur 8086 ou 286
Dernière restriction: à l’intérieur du domaine du 80386, je ne parlerai que de ce qui est le plus important pour faire de petits programmes.
5 POURQUOI APPRENDRE L’ASSEMBLEUR ?
“I believe that all programmers should learn the assembly language for the machines on which they work. …
Learning assembly intimately familiarizes the programmer with the hardware on which s/he is working. The more you know about your hardware environment, the better off you are.” (source: ASM Magazine)
8 REGISTRES DE SEGMENT(16 BITS)
CS segmentde code pointe surl’adresse du début du segment de code (programme)
SS segmentde pile pointe surl’adresse du début du segment de la pile
DS segmentde données pointe surl’adresse du début du segment des données
ES segmentextra pointe surl’adresse actuelle du segment extra
FS et GS deux registres pour l’utilisateur
9 REGISTRES DE DÉPLACEMENT (16,32BITS)
(E)BP pointeur de base pointe surl’adresse des paramètres passés à la pile (16 et 32 bits)
(E)SP pointeur de pile pointe surl’adresse actuelle de la pile (16 et 32 bits)
(E)SI indice de source pointe dans le segment des données (16et 32 bits)
(E)DI indice de destination pointe dans le segment extra (16 et 32 bits)
39 COMMENT SE DÉROULE UNE INTERRUPTION:
Quand le CPUdétecte unsignal d’interruption:
· il arrêtel’activitécourante
· il faitPUSHF PUSH CS PUSH IP
· il regardeà l’adresse 0000:(0000 +4*numéro_int_demandé): c’estla table d’interruption
· il ytrouve le vecteur d’interruption dunuméro_int_demandé
· levecteurd’interruptioncontientl’adresse de lafonction que l’on va exécuter
· quand ila fini d’exécuter cettefonction,ilfait POP IP POPCS POPF
· il reprendl’activitécourante
Il y a différents niveaux de priorité pour les interruptions: 0 à 255. Plus le numéro est faible, plus sa priorité est importante: donc une int_6 (opérande invalide) peut être interrompue par une int_0 (division par 0)
…….
Cours informatique apprenez à programmer en assembleur 80X86 (1698 KO) (Cours PDF)