Beruflich Dokumente
Kultur Dokumente
LIntel 8086, dvelopp en 1978, est le premier microprocesseur de la famille des intel x86.
Il est bas sur des registres 16 bits, et dispose d'un bus externe de donnes de 16 bits et d'un bus
d'adresse de 20 bits.
Sa puissance de calcul varie de 0,33 MIPS (lorsqu'il est cadenc 4.77 MHz) jusqu' 0,75 MIPS
pour la version 10 MHz.
Lunit dinterface avec le bus (BIU : Bus Interface Unit) : elle calcule des adresses relles
(sur 20 bits) recherche les instructions en mmoire et les range dans une file dattente de 6
octets.
Lunit dexcution (EU : Execution Unit) : elle dcode et excute les instructions ranges
dans la file dattente
Les registres
BX = (BH, BL)
Nom
AX (Accumulateur)
Fonction
Utilis pour les oprations arithmtiques telles que MUL (multiplication) ou
DIV (Division) + oprations dE/S
Utilis lors de laccs une zone sous forme de tableau ; il reprsente
lindice du tableau. Il peut aussi tre utilis pour ladressage
Utilis lors de lappel dinstructions comme REP (rpter) ou LOOP
(Boucle) comme compteur
Utilis gnralement pour stocker des donnes provisoires. Il peut servir
comme extension au registre AX + contenir le port dentre sortie
BX (Base)
CX (Compteur)
DX (Donnes)
CX = (CH, CL)
DX = (DH, DL)
Fonction
Registre dindexe utilis lors doprations sur les chanes de caractres, il
SI (Source Index)
dsigne la variable source --> data
DI (Destination Index) Registre dindexe utilis lors doprations sur les chanes de caractres, il
dsigne la variable destination --> extra
BP (Base Pointer)
Registre de base utilis pour contenir ladresse de base dune structure de
donnes en mmoire (tableau,..) --> pile
SP (Stack Pointer)
Pointeur de pile, il indique le dernier lment de la pile point --> pile
- le registre pointeur dinstruction :
IP (Instruction Pointer) : registre sur 16 bits qui indique la prochaine instruction excuter.
- Les registres segment :
Ils sont utiliss pour identifier les 4 segments de code, de donnes de pile et le segment extra.
Nom
CS (Code Segment)
DS (Data Segment)
SS (Stack Segment)
ES (Extra Segment)
Fonction
Mmorise le segment o se trouve le code en cours dexcution
Mmorise le segment o se trouve les donnes du programme
Mmorise le segment o se trouve la pile de donnes du programme
Mmorise le segment supplmentaire pour les donnes
I.2.2.Adressage du 8086
Les adresses relles du 8086 scrivent sur 20 bits, or tous les registres du 8086 sont de 16 bits, une
case mmoire est repre au moyen de 2 champs de 16 bits :
La donne du couple (segment, offset) not segment :offset dfinit une adresse logique.
Ladresse dune case donne sur 20 bits (5 digits hexa) est appele adresse relle ou adresse
physique car elle correspond la valeur relle envoye sur le bus dadresses.
Correspondance entre adresse logique et adresse physique :
Adresse physique = 16 * adresse segment + offset
Adresse relle est obtenue en dcalant le registre segment de 4 positions binaires vers la gauche et
en lui ajoutant loffset
; Le code
Exemple illustratif :
machin DB 10, 0FH
chose DB -2, ALORS
Lorsquon veut dclarer un tableau de n cases, toutes initialises la mme valeur, on utilise la
directive dup
Tab DB 10 dup (0) : Tableau de 10 octets initialises chacune la valeur 0
Remarque :
Pour rserver des octets (variables non initialises), il est possible dutiliser les directives rb
(reserve byte), rw (reserve word),
Val rb 1 est quivalent Val DB ?
5
label :
. ; Instructions excutes aprs le saut
Exemple :
MOV AX, 2
Et : INC AX ; Boucle infinie
JMP Et
Un saut conditionnel nest excut que si une condition (qui porte sur un ou plusieurs flags)
est vrifie.
Jcondition label
; Condition de saut
label :
. ; Instructions excutes si la condition est vrifie
Remarque : Les indicateurs dtat sont positionns en fonction du rsultat de la dernire
instruction.
Exemples : JZ, JNZ, JZ, JB, Voir polycope
Assembleur
Traitement 2
JMP Suite
Traitement 2
Etiquette :
Finsi
Traitement 1
Suite
Suite :
Exemple 2 : Ecrire un programme en assembleur qui place dans une variable Max, le maximum de
deux valeurs 70 et 80.
Assembleur
Jcondition1 Etiquette1
Jcondition2 Etiquette2
Traitement 3
Traitement 2
Sinon
JMP Suite
Etiquette2 :
Traitement 3
Traitement 2
Finsi
JMP Suite
Suite
Etiquette1 :
Traitement 1
Suite :
Exemple 3 : Ecrire un programme en assembleur qui fait la soustraction de deux nombres qui
valent respectivement 30 et 50 et qui placent dans une variable res le caractre p si (a-b) > 0, le
caractre n si (a-b) < 0 et le caractre e si (a-b) = 0
Assembleur
Rpter
REPETER:
{
Traitement
Traitement
}
Jusqu (ConditionSortie)
JXX REPETER
; JXX dsigne la condition de rptition
Tant
faire
que
(ConditionVrifie) TANTQUE :
Traitement
Traitement
FTQ
Suite
JMP TANTQUE
Suite :
Fonction
Lecture du caractre: Met dans AL le code ASCII du caractre saisi
Affichage du caractre dont le code ASCII est plac dans le registre DL
Affichage dune chane de caractres dont ladresse de dbut est place dans DX
Lecture dune chane de caractres place dans DX o la premire case rfrence la taille
maximale de la chane et la 2me case rfrence le nombre de caractres rellement saisis
Tableau 7 : Principales interruptions dentre/ sortie
Remarque :
La saisie sarrte quand on tape sur le retour la ligne (Code ASCII 13), ce dernier est
comptabilis.
DX : adresse du tampon T o sera stocke la chane saisie
[T] doit tre initialis la taille maximale de la chane saisir
Exemple 5 : Ecrire un programme en assembleur qui permet dafficher les lettres de lalphabet en
majuscule
CF : Bit de retenue qui indique quune retenue sest propage partir du bit le plus significatif
dune oprande 8 ou 16 bits la suite dune opration arithmtique.
PF : Indicateur de parit qui prend la valeur 1 si le rsultat dune opration contient un nombre pair
de 1.
AF : Indicateur de retenue auxiliaire prend la valeur 1 pour indiquer quune retenue sest propage
du bit 3 (utilis en BCD).
ZF : Bit de zro prend la valeur 1 si le rsultat dune opration est nul.
SF : Bit de signe prend la valeur 1 si le bit le plus significatif du rsultat est 1.
TF : Bit de pas pas (Trap flag), positionn 1, impose au processeur le mode dexcution pas
pas dans le but daider la mise au point des programmes. La commande trace de debug utilise
cette particularit pour afficher le contenu des registres.
IF : Bit de validation des interruptions, positionn 1, les interruptions externes sont autorises.
DF : Bit de direction : contrle le sens dvolution dans une chane de donnes, si DF = 1, il y a
auto dcrmentation des registres SI et DI et auto incrmentation si DF = 0.
OF : Bit de dbordement de capacit utilis e arithmtique signe qui indique que lopration
arithmtique est sortie de la gamme du systme de numration.
Rle
Copie de la source dans la destination (dun octet ou dun mot)
Empilement de s dans la pile
Dpilement du sommet de la pile dans d
Lecture dun port dE/S ladresse adr
Ecriture dans un port dE/S
Instructions arithmtiques
Instruction
Rle
ADD opd, ops Addition de opd et ops, le rsultat est plac dans opd
SUB opd, ops Soustraction de opd et ops, le rsultat est plac dans opd
MUL op
Multiplication de AL par op (8 bits), le rsultat (16 bits) est plac dans AX
Multiplication de AX par op (16 bits), le rsultat est plac dans DX :AX
DIV op
Division de AX par op8, le rsultat est plac dans AL et le reste dans AH
Division de DX :AX par op16, le rsultat est mis dans AX et le reste dans DX
INC op
Incrmentation de op
DEC op
Dcrmentation de op
NEG op
Remplace op par son ngatif (complment 2)
CMP op, val Comparaison de op la valeur val (les drapeaux sont positionns)
CBW
Covert Byte to Word : Extension de AL dans AH
CWD
Convert Word to Double Word: Extension de AX dans DX
Instructions logiques
Instruction
Rle
NOT op
Complment 1 de op (les 0 deviennent des 1 et inversement)
AND opd, ops ET logique de deux octets ou de deux mots
OR opd, ops OU logique de deux octets ou de deux mots
Rle
Saut ladresse adr si galit / si non galit
Saut ladresse adr si Z= 1 / si Z = 0
Saut ladresse adr si infrieur (Bellow) cd si CF = 1 / si CF = 0
Saut ladresse adr sil y a retenue cd si CF = 1 / si CF = 0
Dcrmentation automatique de CX + saut ladresse adr si CX non nul
Bouclage tant que CX <> 0 et Z = 1
Rle
Saut vers ladresse adr
Appel dun sous programme
Retour dune procdure
Appel linterruption logicielle n n