programmation langage assembleur

231 téléchargements

Noter ce document

-- / 20

Contenu de ce document de Informatique > Programmation

1- Rappel : les systèmes de numération. 6

1.1       Le binaire. 6

1.2 L'hexadécimal 6

1.3 Opérations Arithmétiques. 7

1. 3. 1 L'addition. 7

1.3.2 Les dépassements dans l'addition. 8

1.3.3 Les dépassements dans la multiplication. 8

1.4 Les nombres négatifs. 9

1.5 Les opérations arithmétiques avec les nombres négatifs. 10

1.5.1 L'addition. 10

1.6 Les opérations logiques. 10

1. 6. 1 Le "ET" logique. 10

1. 6. 2 Le "OU" logique (aussi appelé ou inclusif) 10

1.6.3 Le "OU EXCLUSIF". 11

1.6.4 Le "NON" aussi appelé complémentation. 11

1.7 Les décalages binaires. 11

1. 7. 1 Le décalage binaire gauche. 11

1.7.2 Le décalage binaire droit 12

1.7. 3 A quoi ça sert ?. 13

1. 7. 4 La rotation binaire gauche. 14

1. 7. 5 La rotation binaire droite. 14

2- Introduction : les microprocesseurs INTEL.. 15

2.1 La mémoire. 15

2.2 Des segments pour se positionner dans la mémoire. 15

2.3 Un microprocesseur pour agir sur la mémoire. 16

2.3.1 Les Bus De Communication. 16

2.3.1.1 Le bus d'adresse. 17

2. 3. 1. 2 Le bus de données. 17

2. 3. 1. 3 Le bus de contrôle. 17

2.3.1.4 Mécanisme d'accès mémoire. 17

2.3.1.5 Temps d'accès mémoire. 17

2.3.2 La Mémoire Cache. 18

2.3.2.1 La mémoire cache interne. 18

2.3.2.2 La mémoire cache externe. 19

2.4 Les registres. 20

2.4.1 Les registres généraux. 21

2.4.1.1 Le registre EAX. 21

2.4.1.2 Les registres EBX, ECX, EDX. 22

2.4.2 Les registres de segments. 22

2.4.3 Rôle des registres de segments. 22

2.4.4 Les registres d'index. 23

2.4.5 Les différents registres d’index (sur 32 bits) 23

2.4.6 Les registres de travail du microprocesseur 24

2.4.6.1 EIP. 24

2.4.6.2 Registre de flag (32 bits à partir du 386) 24

2.4.7 La pile. 24

2.5 Assembleur et langage machine. 25

3- La mémoire en détail 27

3.1 Segmentation de la mémoire. 27

3.2 Les emplacements réservés. 27

3.3 La pile. 28

3.4 Les modes d’adressage. 29

3.4.1 Accès aux instructions. 30

3. 4. 2 Accès aux données. 30

3.4.3 Adressage immédiat 30

3.4.4 Adressage direct registre. 31

3.4.5 Adressage direct mémoire (déplacement) 31

3.4.6 Adressage indirect mémoire. 32

3.4.6.1 Base ou index. 32

3.4.6.2 Base et index. 33

3.4.6.3 Base ou index + déplacement 34

3.4.6.4 Base + index + déplacement 35

4 LE JEU D’INSTRUCTIONS. 36

4.1 Généralité. 36

4.2 Les instructions de base. 36

4.2.1 L’identificateur 36

4.2.2 MOV.. 36

4.3 Les instructions de pile. 37

4.3.1 PUSH.. 37

4.3.2 POP. 37

4.3.3 PUSHA (PUSH All) 37

4.3.4 POPA (POP All) 37

4.3.5 PUSHAD (PUSH All) 37

4.3.6 POPAD (POP All) 38

4.4 Les instructions sur le registre indicateur. 38

4.4.1 PUSHF (PUSH Flag) 38

4.4.2 POPF (POP Flag) 38

4. 4. 3 LAHF (Load AH from Flag) 38

4.4.4 SAHF (Store AH into Flag) 38

4.5 Les instructions de transferts accumulateur. 38

4. 5. 1 IN (INput from port) 38

4. 5. 2 OUT (OUTput to port) 38

4.5.3 XLAT. 38

4.6 Les instructions arithmétiques. 39

4.6.1 L’addition. 39

4.6.1.1 ADD.. 39

4.6.1.2 ADC (Add with Carry) 39

4.6.1.3 INC (INCrement) 39

4.6.2 La soustraction. 40

4.6.2.1 SUB (SUBstract) 40

4.6.2.2 SBB (SUBstract with Below) 40

4.6.2.3 DEC (DECrement) 40

4.6.3 La multiplication. 40

4.6.3.1 MUL (MULtiply) 40

4.6.3.2 IMUL (signed Integer MULtiply) 41

4.6.4 La division. 41

4.6.4.1 DIV (DIVise) 41

4.6.4.2 IDIV (signed Integer DIVision) 41

4.6.4.3 CMP (CoMPare) 41

4. 6. 5 Ajustement de données. 42

4.6.5.1 AAA (Ascii Adjust for Addition) 42

4.6.5.2 AAS (Ascii Adjust for Subtraction) 42

4.6.5.3 AAM (Ascii Adjust for Multiplication) 42

4.6.5.4 AAD (Ascii Adjust for Division) 42

4.6.6 Conversion de type. 43

4.6.6.1 CBW (Convert Byte to Word) 43

4. 6. 6. 2 CWD (Convert Word to Doubleword) 43

4. 6. 6. 3 CWDE (Convert Word to Extended Doubleword) 43

4.7 Les instructions logiques. 44

4.7.1 AND (ET logique) 44

4.7.2 OR (OU logique) 45

4.7.3 XOR (OU eXclusif) 45

4. 7. 4 TEST (TEST for bit pattern) 45

4.7.5 NOT. 45

4.8 Les instructions de décalages et de rotations. 45

4.8.1 SHR (SHift Right) 46

4. 8. 2 SHL (SHift Left) 46

4.8.3 SAR (Shift Arithmetic Right) 46

4.8.4 SAL (Shift Arithmetic Left) 46

4.8.5 ROR (ROtate Right) 46

4.8.6 ROL (ROtate Left) 47

4.8.7 RCR (Rotate trought Cary Right) 47

4. 8. 8 RCL (Rotate trought Cary Left) 47

4.9 Ruptures de séquence. 48

4. 9. 1 Les branchements inconditionnels. 48

4.9.1.1 JMP (JUmP) 48

4.9.1.2 INT (INTerrupt) 48

4. 9. 2 Les branchements conditionnels. 48

4.9.2.1 Les tests d’indicateurs. 49

4. 9. 2. 2 Les test de nombres non signés. 49

4.9.2.3 Les tests de nombres signés. 49

4. 9. 3 Les boucles. 50

4.9.3.1 LOOP. 50

4.9.3.2 LOOPE (LOOP while Equal) 50

4.9.3.3 LOOPNE. 51

4. 9. 4 Les appels ou retours de sous- programmes. 51

4.9.4.1 PROC (PROCedure) 51

4.9.4.2 ENDP (END Procedure) 51

4.9.4.3 CALL. 51

4.9.4.4 RET (RETurn) 52

4.9.4.5 IRET (Interrupt RETurn) 52

4.10.1 CLD (CLear Direction flag) 52

4.10.2 STD (STore Direction flag) 52

4.10.3 MOVSB (MOVe String Byte) 52

4.10.4 MOVSW (MOVe String Word) 53

4. 10. 5 MOVSD (MOVe String Double) 53

4.10.6 LODSB (LOaD String Byte) 53

4.10.7 LODSW (LOaD String Word) 53

4. 10. 8 LODSD (LOaD String Double) 53

4.10.9 CMPSB (CoMPare String Byte) 54

4.10.10 CMPSW (CoMPare String Word) 54

4. 10. 11 CMPSD (CoMPare String Double) 54

4.10.12 STOSB (STOre String Byte) 54

4.10.13 STOSW (STOre String Word) 54

4. 10. 14 STOSD (STOre String Double) 54

4.10.15 REP (REPeat) 55

4.10.16 REPE (REPeat while Equal) 55

4.10.17 REPNE (REPeat while Not Equal) 55

4.10.18 REPZ (REPeat while Zero) 55

4.10.19 REPNZ (REPeat while Not Zero) 56

4.10.20 SCASB (SCAn String Byte) 56

4.10.21 SCASW (SCAn String Word) 56

4. 10. 22 SCASD (SCAn String Double) 56

4.11 Les instructions de gestion des adresses. 56

4.11.1 LEA (Load Effective Address) 56

4.11.2 LES (Load Extra Segment) 56

4. 11. 3 LDS (Load Data Segment) 57

4.12 Déclaration de données. 57

4.12.1 DB (Define Byte) 57

4.12.2 DW (Define Word) 57

4. 12. 3 DD (Define Double) 57

4.12.4 DQ (Define Quadword) 57

4.12.5 EQU (EQUivalent) 57

5 Exemples. 58

5.1 Pour débuter. 58

5.2 Transfert de chaînes. 58

5.3 Ecriture directe à l’écran. 59

5.4 Lecture de chaîne et affichage. 59

 
 
 

 
 

 

 

231 téléchargements

1 commentaire


Anonyme
Anonyme
Posté le 22 janv. 2016

très utile pour les débutants de la programmation sur itel

 

Il faut être inscrit pour télécharger un document

Crée un compte gratuit pour télécharger ce document

Je m'inscrisOU

J'ai déjà un compte

Je me connecte