Vous êtes sur la page 1sur 131

Université 20 Aout 1955 – Skikda

Département de Génie Electrique

DR. DAOUDI CHOUAIB

2021/2022
Fiche de contact

Enseignant: Dr. Daoudi Chouaib

Email: chouaib.st.cne@gmail.com

Code du cours sur Google classroom:

2
Présentation du cours
Département: Génie électrique
Public cible: L3 Automatique
Intitulé du cours: Microprocesseur et Microcontrôleur
(UEF 312)
Crédits: 6
Coefficient: 3
Durée: 67h00 (cours + TDs) (15 semains)
Mode d’évaluation: 40% Contrôle continu, 60% Examen

3
Description du cours
Objectifs:
Les objectifs de ce module est de comprendre le fonctionnement des
microprocesseurs et les microcontrôleurs et leurs interfaces. A l'issu de
ce cours, les étudiants seraient capables de :
•Identifier les systèmes à microprocesseur et leurs périphériques.
•Différencier entre un microprocesseur et un microcontrôleur.
•Pratiquer la programmation des microcontrôleurs.
Prérequis:
L'étudiant doit avoir des notions sur la logique, combinatoire, logique
séquentielle et des notions de programmation.

4
Contenu du cours
Chapitre 1 : Architecture d’un microprocesseur

Chapitre 2 : Introduction au jeu d’instruction 8086

Chapitre 3 : Le Microcontrôleur

5
Chapitre 1

Architecture
d’un
microprocesseur

6
Introduction

Les systèmes à
microprocesseur

Chapitre 1 7
Introduction

Les microprocesseurs font partie des calculateurs les plus puissants dont les
fonctions sont très variées.

Chapitre 1 8
Structure très complexe

Les microprocesseurs peuvent réaliser des


opérations de très grande complexité dans un
temps très réduit. Leurs structure est très
complexe.

Chapitre 1 9
Structure très complexe

Chapitre 1 10
Définition
Le µP (CPU) est un circuit intégré complexe (ensemble de millions de transistors)
appartenant à la famille des Very Large Scale Intégration (VLSI) capable d'effectuer
séquentiellement et automatiquement des suites d'opérations élémentaires
(programme). Le microprocesseur remplit deux fonctions essentielles : le
traitement des données et le contrôle du système.

Le µP = Portes logiques +
Transistors + résistances + fils
électriques + ……

Chapitre 1 11
Architecture basique d’un µP

• Unité de commande : appelé aussi


Unité de commande et de contrôle
(UCC)
• Unité de traitement

• Registres
• Buses (données, adresses)

Chapitre 1 12
Architecture basique d’un µP

Unité de
traitement

Unité de
commande

Chapitre 1 13
Architecture basique d’un µP
Unité de traitement

C'est le cœur du microprocesseur. Elle regroupe les


circuits qui assurent les traitements nécessaires à
l'exécution des instructions.
 L'unité de traitement est composé de trois éléments
logiques principaux :
1. Unité arithmétique et logique ( UAL).
2. Le registre de travail (Accumulateur).
3. Des registres nommés: registre d’états, le registres
d’adresses.

Chapitre 1 14
Architecture basique d’un µP
L’unité arithmétique et logique

• Composée de circuits logiques tels que les


additionneurs, soustracteurs,
comparateurs logiques...etc.
• Effectue les calculs et les opérations
logiques des différents instructions à
exécuter.
• Les données à traiter
• se présentent aux entrées de l'UAL.
• le résultat est fourni en sortie et
généralement stocké dans l’accumulateur.

Chapitre 1 15
Chapitre 2

Le
microprocesseur
8086

16
Contenu du Chapitre

1 - Introduction
2 – Architecture externe du µp 8086
3 – Organisation interne et segmentation de la mémoire
4 – Modes d’adressage
5 – La programmation du 8086
6 – Exemple de programmation en assembleur

Chapitre 2 17
1 - Introduction

 Développé et commercialisé par INTEL au début des années 1978 (à 1998).

Contient 29000 transistors sur une puce de 32,7 mm2.

 Disponible en trois versions: 8086 (5MHz), 8086-2 (8MHz) et 8086-1 (10MHz).

 Utilisé en: Tablet GriDPad (1989), PC portable HP 110 (1984), Prospecteur lunaire (1998-
1999)

Chapitre 2 18
1- Introduction

 Buses d’adresse et du data:

• Il est un microprocesseur de 16 bits, c’est la taille de bus data (16 bits).

• Il a un bus d’adresse de 20 bits qui peut être adresser 1 Mo (220 ).

• Il a un bus d’adresse et data multiplexé AD0 to AD15 et A16-A19.

 Opérations sur 1, 8 et 16 bits.

 Opérations arithmétiques sur des opérandes signés ou non-signés.

Chapitre 2 19
2 - Architecture externe du 8086

Connexion de la mémoire avec 8086

Chapitre 2 20
2 - Architecture externe du 8086
 Boitier DIP de 40 pins (broches).
 Fonctionne sou une alimentation unique de 5 V.

Chapitre 2 21
2 - Architecture externe du 8086

Chapitre 2 22
2 - Architecture externe du 8086

Chapitre 2 23
3 - Organisation interne du 8086
 Deux unités: BIU: Bus Interface
Unit, unité d’interfaçage avec le
bus, EU: Execution Unit, unité
d’exécution.

Registres  CU: Control Unit ou l’Unité de


de contrôle.
segments  4 registres à usage générale
Pointeur d’instruction (16 bits).

Registres  4 registres de pointeurs et


généraux index (16 bits).
 4 registres de segments.

Note: Les deux unités BIU et EU


Pointeurs fonctionnes indépendamment et
et index peuvent aussi être opérés de
Opérande façons parallèles en mêmes
temps.
Chapitre 2 24
BIU : Unité d’interface de bus
 Cette unité se compose de 4 sous-unités qui sont :

Additionneur d’adresse
4
Registres de
1. Unité de la file d’attente
segments 2
(Queue).
1
2. Registres de segments.
3. Pointeur d’instruction.
4. L’additionneur d’adresse.
Pointeurs d’inst 3

Chapitre 2 25
BIU : Unité d’interface de bus
 BIU est responsable de ce qui suite:

•Bus de données bidirectionnel complet 16 bits et


bus d'adresses 20 bits.
Additionneur
•Connexion aux périphériques externes. d’adresse 4
•Extraction d'instructions (recherche).
•Lire et écrire des données d'opérandes pour la
mémoire.
2
1
•Recevoir/Envoyer des données pour
périphérique d'entrée/sortie.
•L'unité BIU utilise un mécanisme appelé file
3
d'attente d'instructions pour mettre en œuvre
une architecture pipeline.

Chapitre 2 26
BIU : Unité d’interface de bus
Mécanisme de file d'attente d'instructions pour l'architecture pipeline :

1. Cette file d'attente permet la pré-lecture d'un maximum de six octets


de code d'instruction.
2. Ces d’instruction pré-lues sont conservées dans le FIFO queue.
3. Avec son bus de données de 16 bits, la BIU récupère 2 octets
d'instruction en un seul cycle mémoire.
4. Une fois qu'un octet est chargé à l'extrémité d'entrée de la file
d'attente, il se déplace automatiquement dans la FIFO jusqu'à
l'emplacement vide le plus proche de la sortie.
5. l'UE accède à la file d'attente à partir de la sortie. Elle lit un octet
d'instruction après l'autre à partir de la sortie de la file d'attente.
6. Ces intervalles d'absence d'activité de bus, qui peuvent se produire
entre les cycles de bus, sont connus sous le nom d'état inactif (idl
state).
27
Segmentation du mémoire
Mécanisme de file d'attente d'instructions pour l'architecture pipeline :

Chapitre 2 28
BIU : Unité d’interface de bus
L'unité BIU contient également un additionneur dédié :

• L'additionneur est utilisé pour générer l'adresse physique de 20 bits qui est sortie sur
le bus d'adresse. cette adresse est formée en ajoutant une adresse de segment de 16
bits et une adresse de décalage de 16 bits.

PA = A.seg*10h + A.offset

29
EU : Unité d’exécution
L'unité d'exécution se compose de 7 sous-unités qui:

1. Unité de contrôle.
2. Décodeur d’instructions 1
3. UAL
4
4. Registres généraux
5. Registre de drapeaux 3
6. Pointeurs
6
7 5
7. Registres d’indices 2 Opérandes

30
EU : Unité d’exécution
 Le mécanisme de l'unité de l'UE comme suit :

1. L'unité EU extrait les instructions du haut de la


file d'attente de l'unité BIU.
2. Décoder les instructions.
3. Génère des opérandes si nécessaire.
4. Transmet les opérandes à l'unité BIU et lui
demande d'effectuer des cycles de lecture ou
d'écriture de bus dans la mémoire ou les E/S.
5. Effectuez l'opération spécifiée par l'instruction
sur les opérandes.
6. Instruction de branchement ou de saut.
Opérandes

31
Registre d’état (Flags)
 Le registre d’état:

1. Un registre des indicateurs fabriqué de bascule,


il indique certaines conditions produites par
l'exécution d'une instruction ou contrôle
certaines opérations de l'unité d'exécution.
2. Un registre de 16 bits.
3. Il y a au total 9 bits utiles. Les autres sont
réservés ou indéfinis par Intel.
4. 6 bits sont des drapeaux de condition indiquant
quelque condition issu de l’exécution d’une
instruction.
5. 3 bits sont les drapeaux qui participent au
Opérandes
contrôle du processeur.

32
Registre d’états (Flags)

1. Indicateurs d’état: 2. Indicateurs de contrôle:


Carry flag (CF) Direction flag (DF)
Parity flag (PF) Trap flag (TF)
Auxiliary flag (AF) Interrupt flag (IF)
Zero flag (ZF)
Sign Flag (SF)
Overflow flag (OF)

33
Registre d’états (Flags)

Indicateurs d’état
Indicateurs contrôle

34
Registre d’états (Flags)
1. Indicateurs d’état: (carry)
Carry flag (CF): Retenue: indique le dépassement de capacité de 1 sur une
opération 8 bits ou 16 bits. Ce flag peut être utilisé par des instructions de saut
conditionnel, des calculs arithmétique en chaîne ou dans des opération de
rotation. (ADD, SUB, CMP).
CF = 1
CF = 1 s'il y a une retenue après l'addition (retenue) ou la soustraction (borrow,
emprunt) du bit de poids fort des opérandes, Cout = 1.
1 1 111
Exemple: dernier carry out (Cout)
1110 1111
Supposant: AL = EFh, et BL = 18h.
0001 1000
0000 0111

35
Registre d’états (Flags)
1. Indicateurs d’état: (carry)
Exemple:
Supposant: CX = 7591h, et DX = 8248h.

Emprunt 1 0 1 0 1 0 1
sur MSB 0111010110010001
1000001001001000

1111001101001001

36
Registre d’états (Flags)
1. Indicateurs d’état: (carry)
Exemple:
Supposant: AL = 89h, et BL = 48h.

Pas d’emprunt sur 0 1


MSB 10001001
01001000

01000001

37
Registre d’états (Flags)
1. Indicateurs d’état: (Parity)
 Parity flag (PF): Parité: indique que le nombre de 1 est un nombre pair. Il est
utilisé avec certains sauts conditionnels
PF = 1
 s’il y a un nombre paire de 1 dans l’octet inférieur du résultat.
Exemple:

1 1 111 1 1
(Cout)
1111 1110
1001 0111
1001 0101
Total des 1  4

38
Registre d’états (Flags)
1. Indicateurs d’état: (Parity)
Exemple:
Supposant: CX = 7591h, et DX = 8248h.

Emprunt 1 0 1 0 1 0 1
sur MSB 0111010110010001
1000001001001000

1111001101001001

39
Registre d’états (Flags)
1. Indicateurs d’état: (Parity)
Exemple:
Supposant: AL = 89h, et BL = 48h.

Pas d’emprunt sur 0 1


MSB 10001001
01001000

01000001

40
Registre d’états (Flags)
1. Indicateurs d’état: (Auxiliary)
Auxiliary carry flag (AF): Demie retenue: indique une retenue sur les 4 bits (digit)
de poids faible. C.-à-d.: quand la somme
des 2 digits de poids faible dépasse F (15)
AF = 1
 s’il y a un report ou l'emprunt se produit sur le 4ème bit ou que le report sort du
4ème bit dans un demi-octet inférieur (1 quartet).
Exemple: 4321
1 1 111 1 1
(Cout)
1111 1110
1001 0111
1001 0101

41
Registre d’états (Flags)
1. Indicateurs d’état: (Zeros)
Zeros flag (ZF): Zéro: Indique que le résultat d'une opération arithmétique ou
logique est nul. Il est utilisé dans
plusieurs instructions de sauts conditionnels
Exemple:

1000 1001
1000 1001

0000 0000

42
Registre d’états (Flags)
1. Indicateurs d’état: (Zeros)
Exemple:

1 1 1
1000 1001
1000 1001

0001 0010

43
Registre d’états (Flags)
1. Indicateurs d’état: (Sign)
Sign flag (SF): signe: SF est positionné à 1 si le bit de poids fort du résultat d'une
addition ou soustraction est 1 ; sinon SF=0. SF est utile lorsque l'on manipule des
entiers signés, car le bit de poids fort donne alors le signe du résultat.
Exemple:

1 1 1
10111001
11100010

10011011

44
Registre d’états (Flags)
1. Indicateurs d’état: (OverFlow)
Overflow flag (OF): Débordement: si on a un débordement arithmétique ce bit
est mis à 1.c-a-d le résultat d'une opération excède la capacité de l'opérande
(registre ou case mémoire), sinon il est à 0.
On distingue 2 types de débordements: débordement signé et débordement non-
signé.
Débordement signé se produit quand Carry in (Cin)  Carry out (Cout) ou Emprunt
in (Bin)  Emprunt out (Bout).
Débordement non-signé se produit quand Cin = Cout ou Bin = Bout

45
Registre d’états (Flags)
1. Indicateurs d’état: (OverFlow)
Exemple: Cin

Cout 1 11
10111001

11100010

10011011

Puisque Cin = Cout, donc

46
Registre d’états (Flags)
1. Indicateurs d’état: (Overflow)
Exemple:
Supposant: CX = 7591h, et DX = 8248h.

Bin
Bout = 0 1 0 1 0 1 0 1
Emprunt sur MSB CF = 1 0111010110010001
Il y a nombre impair de 1 dans
l’octet faible PF = 0
1000001001001000
Emprunt se produit sur 4eme
bit, AF = 1
1111001101001001
Résultat  0, ZF = 0
MSB du résultat est 1, SF = 1
Puisque Bin  Bout, OF = 1
47
Registre d’états (Flags)
1. Indicateurs de contrôle : (Direction)
Direction flag (DF): direction: Auto Incrémentation/Décrémentation : utilisée
pendant les instructions de chaîne de caractères pour auto incrémenter ou auto
décrémenter le SI et le DI.
Exemple: afficher le mot ‘Assembly’ sur l’écran (Direction par défaut de gauche à
droite).
DF = 1, alors la chaîne sera imprimée de droite à gauche. donc, ‘ylbmessA’ sera
imprimé.
DF = 0, alors la chaîne sera imprimée dans la bonne direction. Ainsi, ‘Assembly’
sera imprimé.

48
Registre d’états (Flags)
1. Indicateurs de contrôle : (Interrupt)

Interrupt flag (DF): interruption: Masque d'interruption : pour masquer


les interruptions venant de l'extérieur ce bit est mis à 0, dans le cas
contraire le microprocesseur reconnaît l'interruption de l'extérieur.

49
Registre d’états (Flags)
1. Indicateurs de contrôle : (Trap)

Trap/single-step flag (TF): Piége: pour que le microprocesseur exécute le


programme pas à pas afin de faciliter la recherche des défauts
d'exécution.

50
4 – Modes d’adressage
 Format d’instruction:
• La structure la plus générale d’une instruction est la suivante :

• L’opération est réalisée entre les 2 opérandes et le résultat est


toujours récupéré dans l’opérande de gauche.
• Il y a aussi des instructions qui agissent sur un seul opérande:
INST Opérande
• Les opérandes peuvent être des registres, des constantes ou le
contenu de cases mémoire.

51
4 – Modes d’adressage
Adressage:
•Les instructions et leurs opérandes (paramètres) sont stockées en
mémoire principale. La taille totale d'une instruction (nombre de bits
nécessaires pour la représenter en mémoire) dépend du type d'instruction
et aussi du type d'opérande. Chaque instruction est toujours codée sur un
nombre entier d'octets, afin de faciliter son décodage par le processeur.
•Pour faciliter la programmation il existe de nombreux modes d'adressage
(7 modes pour 8086).
- Mode d'adressage registre.
- Mode d'adressage relatif à une base.
- Mode d'adressage immédiat. - Mode d'adressage direct indexe.
- Mode d'adressage indexée.
- Mode d'adressage direct.
- Mode d'adressage registre indirect.

52
4 – Modes d’adressage
Adressage registre :
•ce mode utilise les registres internes de μp, dans ce mode il faut respecté
la taille de différents registres.
•Quand on utilise l'adressage registre, le microprocesseur effectue toutes
les opérations d'une façon interne.
•Il n'y a pas d'échange avec la mémoire, ce qui augmente la vitesse de
traitement de l'opérande.

Exemples :
INC AX : incrémenter le registre AX (AX = AX + 1)
MOV AX, BX : Copier le contenu de BX dans AX (AX = BX)

53
4 – Modes d’adressage
Adressage immédiat :
•La donnée est spécifiée immédiatement après l’instruction. Elle est donc
située dans le segment de code.
Exemples :
MOV AX, 243 : charger le registre AX par le nombre décimal 243 (AX=243)
ADD AX, 243h: additionner le registre AX avec le nombre hexadécimal 243
JMP 008 : saut à l’instruction du numéro 008
MOV AL, ‘A' : Charger le registre AL par le code ASCII du caractère ‘A‘ (65)
MOV AX, ‘A' : Charger le registre AH par 00 et le registre AL par le code ASCII du
caractère ‘A'
MOV AX,‘AB' : Charger AH par ‘A' et AL par ‘B‘ (66)

54
4 – Modes d’adressage
Adressage immédiat :
•La donnée est spécifiée immédiatement après l’instruction. Elle est donc
située dans le segment de code.
REMARQUE:
MOV AX,-500H ; le signe - sera propager dans ;le registre jusqu'à
remplissage de ce dernier.
MOV AX,-500H donne AX =1111101100000000
MOV BL,-20H donne BL = 11100000

Note:
ce mode est utilisé pour charger une donnée dans un registre quelconque sauf
FR et (CS, DS, SS, ES)
Sol: MOV AX, 2550h
MOV DS, AX

55
4 – Modes d’adressage
Adressage direct :
•Un des deux opérandes se trouve en mémoire. L’adresse de la case mémoire
est précisé directement dans l’instruction (offset).
•L’adresse Rseg:Off doit être placée entre [ ], si le segment n’est pas précisé, DS
est pris par défaut.
Exemple:
MOV AX,-500H ; le signe - sera propager dans ;le registre jusqu'à
MOV AX,[243] : Copier le contenu de la mémoire d'adresse DS:243 dans AX
MOV [123],AX : Copier le contenu de AX dan la mémoire d'adresse DS:123
MOV AX, [SS:243] : Copier le contenu de la mémoire SS:243 dans AX

56
4 – Modes d’adressage
Adressage indirect :
Dans ce mode l’adresse effective est le contenu d’un registre de base (BX ou
BP) ou index (SI ou DI).
Exemple:
MOV AX, [BX] ; Charger AX par le contenu de la mémoire d'adresse DS:BX
MOV AX, [BP] ; Charger AX par le contenu de la mémoire d'adresse SS:BP
MOV AX, [SI] ; Charger AX par le contenu de la mémoire d'adresse DS:SI
MOV AX, [DI] ; Charger AX par le contenu de la mémoire d'adresse DS:DI
MOV AX, [ES:BP] ; Charger AX par le contenu de la mémoire d'adresse ES:BP

57
4 – Modes d’adressage
Adressage indirect :
Si le registre n'est pas spécifié, le segment par défaut sera utilisé.

MOV AX, [BX] ; Charger AX par le contenu de la mémoire d'adresse DS:BX


MOV AX, [BP] ; Charger AX par le contenu de la mémoire d'adresse SS:BP
MOV AX, [SI] ; Charger AX par le contenu de la mémoire d'adresse DS:SI
MOV AX, [DI] ; Charger AX par le contenu de la mémoire d'adresse DS:DI
MOV AX, [ES:BP] ; Charger AX par le contenu de la mémoire d'adresse ES:BP

58
4 – Modes d’adressage
Adressage indirect :

L’adressage indirect est divisé en 3 catégories selon le registre d’offset utilisé:


l’adressage Basé, l’adressage indexé et l’adressage basé indexé.

59
4 – Modes d’adressage
Adressage indirect – Basé - :
• L’offset se trouve dans l’un des deux registres de base BX ou BP.
• On peut préciser un déplacement qui sera ajouté au contenu de Registre d’offset
pour déterminer l’offset.
Exemples :
• MOV AX, [BX] : Charger AX par le contenu de la mémoire d'adresse DS:BX
• MOV AX, [BX+5] : Charger AX par le contenu de la mémoire d'adresse DS:BX+5
• MOV AX, [BP-200] : Charger AX par le contenu de la mémoire d'adresse SS:BP-200
• MOV AX, [ES:BP] : Charger AX par le contenu de la mémoire d'adresse ES:BP

60
4 – Modes d’adressage
Adressage indirect – Indexé - :
• L’offset se trouve dans l’un des deux registres d’index SI ou DI.
• On peut préciser un déplacement qui sera ajouté au contenu de Registre d’offset
pour déterminer l’offset.
Exemples :
•MOV AX, [SI]; Charger AX par le contenu de la mémoire d'adresse DS:SI
•MOV AX, [SI+500]; Charger AX par la mémoire d'adresse DS:SI+500
•MOV AX, [DI-8]; Charger AX par la mémoire d'adresse DS:DI-8
•MOV AX, [ES:SI+4]; Charger AX par la mémoire d'adresse ES:SI+4

61
4 – Modes d’adressage
Adressage indirect –basé indexé - :

• L'offset de l’adresse de l'opérande est la somme d'un registre de base, d'un registre
d'index et d'un déplacement optionnel. Si le registre segment n'est pas spécifié, le
segment par défaut du registre de base est utilisé.
Exemples :
•MOV AX,[BX+SI]; AX est chargé par la mémoire d'adresse DS:BX+SI
•MOV AX,[BX+DI+5]; AX est chargé par la mémoire d'adresse DS:BX+DI+5
•MOV AX,[BP+SI-8]; AX est chargé par la mémoire d'adresse SS:BP+SI-8
•MOV AX,[BP+DI]; AX est chargé par la mémoire d'adresse SS:BP+DI

62
4 – Modes d’adressage

Registre
Accès rapide

Mémoire
Accès Lent

63
5 – La programmation du 8086
Le jeu d’instruction :

Le 8086 dispose de 133 instructions. On distingue:


•Les instructions de transfert
•Les instructions arithmétiques
•Les instructions logiques
•Les instructions de branchement conditionnel
•Les instructions de branchement
•Les instructions de contrôle
•Les instructions de traitement de chaines de
caractères

64
5 – La programmation du 8086
Les instructions de transfert :

65
5 – La programmation du 8086
Les instructions de transfert : général
1- L’instruction MOV
•Il permet le transfert des données entre registres ou entre registres et cases mémoire

•Sa syntaxe: MOV destination, source

•Cette instruction présente plusieurs cas suivant la nature des opérandes

Exemples:
MOV AL,77h ; registre et donné immédiate
MOV AL,[1000h] ;registre et donné en mémoire
MOV BX,AX ;registre et registre
MOV WORD PTR [1000h], 1258h ;mémoire et donné immédiate

66
5 – La programmation du 8086
Les instructions de transfert : général
2- L’instruction XCHG
•Elle permet de commuter la source et la destination comme suit:

67
5 – La programmation du 8086
Les instructions de transfert : Transfert d’adresses
3- L’instruction LEA (Load Effective Adress)

• •Elle transfert l'adresse offset (décalage) d'une opérande mémoire dans un registre
de 16 bits (pointeur ou index)

Exemple :

LEA AX, [BX+SI];


LEA calcule l'offset de la source (BX + SI) et le place dans la destination (AX). Cela
revient à dire : AX = BX + SI

mov BX, 10 ; BX = 10
mov SI, 20 ; SI = 20
LEA AX, [BX+SI]; AX = 30

68
5 – La programmation du 8086
Les instructions de transfert : Transfert d’adresses
4- L’instruction LDS/LES (Load Data/Extra segment)
• Chacun de ces instructions permet de charger le segment (DS ou ES) et l'offset d'une
adresse.
Exemple:
(BX) = 20H, (DI) = 1000H, (DS) = 1200H
1 - LEA SI, [DI+BX+5H]
2 - LDS SI, [200H]
Solution:
1 - EA = 1000+20+5 = 1025H  (SI) = 1025H
2 – PA = DS*10+EA = 1200*10+200 = 12200H  (SI) = AA11H
PA(Low) et PA + 1(High) (SI  Reg 16 bits – High, Low)
(DS)  (PA + 2)Low, (PA + 3)High
(DS) = FFEE

69
5 – La programmation du 8086
Les instructions de transfert : Transfert d’adresses

4- L’instruction LDS/LES (Load Data/Extra segment)

Exemple : Au lieu de faire :

MOV BX, offset tab_val


MOV AX , Seg tab_val
MOV DS , AX
On remplace ces trois instructions par une seule :
LDS BX , tab_val ; elle charge automatiquement l'offset de tab_val dans le
registre BX ; et le ;segment dans le registre DS .

70
5 – La programmation du 8086
Les instructions de transfert : Transfert de flags
5- L’instruction LAHF/SAHF
• LAHF : Load AH from Flags : place l'octet de poids faible du registre d'état
(FLAGS) dans le registre AH comme suit :

• SAHF : Store AH into Flags : Place le contenu de AH dans l'octet de poids


faible du registre d'état (FLAGS)

71
5 – La programmation du 8086
Les instructions de transfert : Transfert de flags
6- L’instruction PUSHF/POPF
PUSHF : Permet d'empiler la totalité du registre d'état (FLAGS)
POPF : Permet de dépiler le registre d'état (FLAGS)

72
5 – La programmation du 8086
Les instructions arithmétiques:

73
5 – La programmation du 8086
Les instructions arithmétiques: ADDITION
1- Instruction ADD
• Elle effectue une addition, le résultat est placé dans le registre ou dans la mémoire
(Destination)
Syntaxe :
ADD Destination, source  Destination <---------- Destination + source
• Cette instruction présente plusieurs cas:
ADD registre , donnée immédiate
ADD mémoire, donnée immédiate
ADD registre , mémoire
ADD mémoire , registre
ADD registre, registre

74
5 – La programmation du 8086
Les instructions arithmétiques: ADDITION

75
5 – La programmation du 8086
Les instructions arithmétiques: INCREMENT

76
5 – La programmation du 8086
Les instructions arithmétiques: SOUSTRACTION

77
5 – La programmation du 8086
Les instructions arithmétiques: SOUSTRACTION

78
5 – La programmation du 8086
Les instructions arithmétiques: SOUSTRACTION

79
5 – La programmation du 8086
Les instructions arithmétiques: SOUSTRACTION

80
5 – La programmation du 8086
Les instructions arithmétiques: SOUSTRACTION

Résultat de comparaison Flags


Destination > Source CF = 0 et ZF = 0
Destination < Source CF = 1
Destination = Source ZF = 0

81
5 – La programmation du 8086
Les instructions arithmétiques: CMP
Exemple 1:

MOV AX,25
CMP AX,0 ;Résultat = 25, CF = 0 et ZF = 0

Exemple 2:

MOV AX,10
CMP AX,15 ;Résultat = -5, CF = 1

Exemple 3:

MOV AX,5
CMP AX,5 ;Résultat = 0, ZF = 1

82
5 – La programmation du 8086
Les instructions arithmétiques: Multiplication

83
5 – La programmation du 8086
Les instructions arithmétiques: Multiplication

84
5 – La programmation du 8086
Les instructions arithmétiques: Multiplication

85
5 – La programmation du 8086
Les instructions arithmétiques: Multiplication

86
5 – La programmation du 8086
Les instructions arithmétiques: Division

87
5 – La programmation du 8086
Les instructions Logiques:

88
5 – La programmation du 8086
Les instructions Logiques: AND (Et logique)

89
5 – La programmation du 8086
Les instructions Logiques: OR (Ou logique)

90
5 – La programmation du 8086
Les instructions Logiques: XOR (Ou Exlusif logique)

91
5 – La programmation du 8086
Les instructions Logiques: NOT (Non logique)

92
5 – La programmation du 8086
Les instructions Logiques: TEST (Comparaison logique)

93
5 – La programmation du 8086
Les instructions Logiques: DECALAGE logique

94
5 – La programmation du 8086
Les instructions Logiques: DECALAGE logique

95
5 – La programmation du 8086
Les instructions Logiques: DECALAGE Arithmétique

96
5 – La programmation du 8086
Les instructions Logiques: DECALAGE Arithmétique

97
5 – La programmation du 8086
Les instructions Logiques: ROTATION

98
5 – La programmation du 8086
Les instructions Logiques: ROTATION

MOV Al,11001011b
MOV CL, 2
AL = 97h
ROL AL,1
<<2
ROL AL, CL
AL= 5E= 01011110b
99
5 – La programmation du 8086
Les instructions Logiques: ROTATION

100
5 – La programmation du 8086
Les instructions Logiques: ROTATION

RCR AL,1

RCL AL,1

101
5 – La programmation du 8086
Les instructions de pile:

102
5 – La programmation du 8086
Les instructions de pile: PUSH

103
5 – La programmation du 8086
Les instructions de pile: PUSH

104
5 – La programmation du 8086
Les instructions de pile:

105
5 – La programmation du 8086
Les instructions de pile: POP

106
5 – La programmation du 8086
Les instructions de branchement:



• 

107
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels

108
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels

• Le mode d’adressage des instructions de branchement est


immédiat.

109
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels

110
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels

CALL XXX Appel d'une procédure (sous


programme) qui commence à la ligne
XXX. La position de l'instruction suivant le
CALL est empilée pour assurer
une poursuite correcte après l'exécution
du sous programme.

RET Retour de sous programme.


L'exécution du programme continue à
la position récupérée dans la pile.

111
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels

112
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels

113
5 – La programmation du 8086
Les instructions de branchement: Conditionnels

114
5 – La programmation du 8086
Les instructions de branchement: Conditionnels

115
5 – La programmation du 8086
Les instructions de branchement: Conditionnels

116
5 – La programmation du 8086
Les instructions de branchement: Conditionnels

• Branchements (sauts) arithmétiques: suivent en général l’instruction


de comparaison : CMP A,B

117
5 – La programmation du 8086
Les instructions de branchement: Conditionnels

118
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)

119
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)

120
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)

121
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)

122
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)

123
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)

124
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)

125
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)

126
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)

127
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)

128
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)

129
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)

Solution 1

130
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)

Solution 2

131

Vous aimerez peut-être aussi