Vous êtes sur la page 1sur 6

1-Generalité :

1-Le Micro-processeur :
Un microprocesseur : est un circuit intégré complexe caractérisé par une très grande intégration et doté
des facultés d'interprétation et d'exécution des instructions d'un programme. Il est chargé d’organiser les
tâches précisées par le programme et d’assurer leur exécution. Il doit aussi prendre en compte les
informations extérieures au système et assurer leur traitement. C’est le cerveau du système. A l’heure
actuelle, un microprocesseur regroupe sur quelques millimètres carrés des fonctionnalités toujours plus
complexes. Leur puissance continue de s’accroître et leur encombrement diminue régulièrement
respectant toujours, pour le moment, la fameuse loi de Moore.

2-Le microprocesseur 8086 (16b) :


Le processeur 8086 d'Intel Le microprocesseur
Intel 8086 est un microprocesseur 16 bits,
développé par Intel en juin 1978. C’est le
premier microprocesseur de la famille Intel
80x86 (8086, 80186, 80286, 80386, 80486,
Pentium, ...). Il se présente sous la forme d’un
boîtier DIP (Dual In-line Package) à 40 broches.
Les processeurs successifs du 8086 se sont en
effet construits petit à petit en ajoutant à
chaque processeur des instructions et des
fonctionnalités supplémentaires, mais en
conservant à chaque fois les spécificités du processeur précédent. C'est cette façon d'adapter les
processeurs à chaque étape qui permet qu'un ancien programme écrit pour un 8086 fonctionne toujours
sur un nouvel ordinateur équipé par exemple d'un Pentium IV, l’inverse n’est évidemment pas toujours
vrai.

3-Le logiciel DATS-8086 :


Avant de commencer le travail on doit parler sur le logiciel principal DATS-8086.
Le Dats-8086 est un logiciel Conçu comme une unité d'usage général, il simplifie
l'enseignement du processeur 8086 et de ses périphériques couramment utilisés.

Parmi ses caractéristiques, nous trouvons :


• Line Assemble : pour entrer une ligne de code à la fois (les programmes peuvent être sauvegardés, rechargés
et téléchargé au circuit si nécessaire)
• Memory : examiner / modifier le contenu de la mémoire
• Register : examiner / modifier le contenu des registres
• Single Step : faits saillants et étapes à travers le code une instruction unique à la fois
4-La partie pratique :
1-But de TP :
• Se familiariser avec le logiciel d’interface sous Windows du KIT 8086DATS (kit de base de µp8086).
• Comprendre les modes d’adressage du 8086.
• Ecrire des programmes assembleur simples.

2-1-Partie A :
Le programme :
Code machine
Segment IP Binaire Hexadécimale Programme Description
0050 : 0100 101110001100110000000000 B8CC00 MOV AX,00CC Transfer CC
vers AX
0050 : 0103 101110100011001100000000 BA3300 MOV DX,0033 Transfer 33
vers DX
0050 : 0106 10010000 90 HLT Ne rien à faire

Les étapes :
Etapes 1 2 3 4

AX 0000 00CC 00CC 00CC

IP 0100 0103 0106 0107

DX 0000 0000 0033 0033

Les Remarques :
• L’instruction MOV permet de transférer les données (un octet ou un mot) d’un registre à un autre
registre ou d'un registre à une case mémoire.
• On remarque qu’après chaque instruction DATS indiquer directement sur l’IP de l’instruction
suivant.
• On remarque aussi que dans la fenêtre de Registre que les registres AX et DX sera remplié par la
valeur 00CCh et 0033h comme on a programmé et ces valeurs restent constant parce que on ne les
pas modifiés.
• L’instruction HLT ne rien à faire.

2-2-Partie B :
1. Avant passe à l’étape suivant on doit cliquer sur « RESET » pour faire la remise à zéro.
2. Puit on clique sur « OK ».
Le programme :
Code machine
Segment IP Binaire Hexa Programme Description
0050 : 0010 101110000110011000000000 B86600 MOV AX,0066 Charger l’ACC
par 66H
0050 : 0013 101110110101010100000000 BB5500 MOV BX,0055 Charger BX par
55H
0050 : 0016 01010000 50 PUSH AX Stocker le
continu de AX
dans la pile
0050 : 0017 01010011 53 PUSH BX Stocker le
continu de BX
dans la pile
0050 : 0018 101110110000000000000000 BB0000 MOV BX,0000 Effacer le
continu de BX
0050 : 001B 101110000000000000000000 BB0000 MOV AX,0000 Effacer le
continu de AX
0050 : 001E 10000001111000101111101111111111 81E2FBFF AND DX,FFFB Et logique entre
DX et FFFB
0050 : 0022 01011011 5B POP BX Charger BX de la
pile par 0055
0050 : 0023 01011000 58 POP AX Charger AX de la
pile par 0066
Les Remarques :
L’instruction PUSH : L’instruction POP :
Elle permet d'empiler les registres du CPU Elle permet de dépiler les registres du CPU
sur le haut de la pile. sur le haut de la pile.

Exemple : Exemple :
• L’intérêt de la pile est d’emmagasine les donnes pour l’utilise Plus tard.
• La première valeur stocker dans la pile c’est la dernière valeur qui va sortie.
• Le pointeur SP change avec l’instruction « PUSH » et « POP » (lorsqu’on a utilisé PUSH et POP le
pointeur SP a changé sa valeur).

2-3-Partie C :
Le programme :
Code machine
Segment IP Binaire Hexa Programme Description
0050 : 0010 101110000110011000000000 B80400 MOV AX,0004 Remplie le registre AX

Addition
par le nombre 0004
0050 : 0103 101110110000010100000000 BB0500 MOV BX,0005 Remplie le registre BX
par le nombre 0005
0050 : 0106 0000001111011000 03D8 ADD BX, AX Ajouter à BX la valeur de
AX

0050 : 0108 101110000000010100000000 B80500 MOV AX,0005 Remplie le registre AX


par le nombre 0005
0050 : 010B 101110110010101100000000 BB2B00 MOV BX,002B Remplie le registre BX
par le nombre 002B
0050 : 010E 1000101111010000 8BD0 MOV DX, AX Remplie le registre DX

Opération Logique
par Le contenu de AX
0050 : 0110 0010001111010011 23D3 AND DX, BX ET logique entre DX et AX
et le résultat dans DX
0050 : 0112 1000101111010000 8BD0 MOV DX, AX Remplie le registre DX
par Le contenu de AX
0050 : 0114 0000101111010011 0BD3 OR DX, BX OU logique entre DX et
BX et le résultat dans DX
0050 : 0116 1000101111010000 8BD0 MOV DX, AX Remplie le registre DX
par Le contenu de AX
0050 : 0118 0011001111010011 33D3 XOR DX, BX OU exclusif entre DX et
BX et le résultat dans DX

0050 : 011A 101110000000100000000000 B80800 MOV AX,0008 Remplie le registre AX


par le nombre 0008
Soustraction

0050 : 011D 001011010000010100000000 2D0500 SUB AX,0005 Soustraire 0005 de AX et


le résultat dans AX
0050 : 0120 001011010000100100000000 2D0900 SUB AX ,0009 Soustraire 0009 de AX et
le résultat dans AX
0050 : 0123 001011011111101000000000 2DFA00 SUB AX,00FA Soustraire 00FA de AX et
le résultat dans AX
0050 : 0126 001111010001010100000000 3D1500 CMP AX,0015 Faire une comparaison
entre AX et 0015
0050 : 0129 011100100000000000000110 7206 JB 0006 Si AX < 0015 saute vers
l'adresse dont la valeur
relative est (0006)
0050 : 012B 011101000000000000000101 7405 JE 0005 Si AX = 0015 saute vers

Comparaison
l'adresse dont la valeur
relative est (0005)
0050 : 012D 011101110000000000000100 7704 JA 0004 Si AX > 0015 saute vers
l'adresse dont la valeur
relative est (0004)
0050 : 012F 10010000 90 HLT Ne rien à faire
0050 : 0130 10010000 90 HLT Ne rien à faire
0050 : 0131 10010000 90 HLT Ne rien à faire
Les Remarques :
1 - L’instruction « CMP » va comparais la valeur AX avec la valeur 0015 et le résultat de la comparaison et
contenu dans le registre d'état FLAG.

Selon le résultat de comparaison, une seule instruction va exécute soit « JB » ou « JE » ou « JA »

• Si AX = 0015 l’instruction « JE » va exécute


• Si AX > 0015 l’instruction « JA » va exécute
• Si AX < 0015 l’instruction « JB » va exécute

2 – Autre instruction on a utilisée :


ADD : (Addition) :
[Syntaxe : ADD Destination, source]
Elle permet d'additionner le contenu de la source avec celui de la destination le résultat est mis dans la
destination.
SUB : (Soustraction) :
[Syntaxe : SUB Destination, source]
Elle permet de soustraire la source de la destination le résultat est mis dans la destination.
OR : (OU logique) :
[Syntaxe : OR Destination, source]
Elle permet de faire un OU logique entre la destination et la source le résultat est mis dans la destination.
XOR : (OU exclusif) :
[Syntaxe : XOR Destination, source]
Elle permet de faire un OU exclusif logique entre la destination et la source le résultat est mis dans la
destination.
AND : (Et logique) :
[Syntaxe : AND Destination, source]
Elle permet de faire un ET logique entre la destination et la source le résultat est mis dans la destination.

5 - Conclusion :
• On a habitué à l'utilisation du kit DATS-8086 par l'écriture de diffère instruction Logique et
arithmétique.
• On a compris le principe d’exécution pas à pas pour lancer le programme.
• On a compris aussi l’avantage des registres dont le but est de recevoir des informations
spécifiques, notamment des adresses et des données stockées durant l'exécution d'un programme.
• On peut comparais entre deux valeurs souhaitées avec L’instruction « CMP ».
• Pour saut vers un IP selon la résulta de comparaison on peut utiliser ces instructions : « JB », « JE », « JA ».