You are on page 1of 79

Centre De Formation **HBM Corporation**

Programmation Et Interfaage De Microprocesseur 8086

Support de cours
Pour les tudiants : 4me Electronique et automatique. 5me Electronique. 2 et 3me Informatique. Systme LMD.

Mer. ATOUI Hamza


Ingnieur en lectronique option contrle industriel Deuxime anne magistre option TELECOM et Traitement du signal numrique Email : HBMVIPH@hotmail.com

2006-2007

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Table Des Matires


Introduction Macro Architecture 1- Exemple dune unit de transfert 2- Architecture de lunit de dcodage et de contrle III) Conception de p vue de 8086 IV) Architecture de p 8086 1- Les bus 2- Schma synoptique de p 8086 3- Registres de travails 4- Registres de segments 5- Le registre FLAG V) Les modes dadressages - Introduction 1) Adressage registre 2) Adressage immdiat 3) Adressage direct 4) Adressage indirect par registre 5) Adressage bas 6) Adressage index 7) Adressage bas index 8) Adressage des entres sorties (I/O) 9) Adressage relatif 10) Adressage vectoris VI) Jeu dinstructions a) Instructions de Transferts b) Instructions Arithmtiques c) Instructions Logiques d) Instructions de traitement de chane e) Instructions de saut et dappelle sous programme f) Instructions des interruptions logicielles g) Instructions de contrle du p VII) Interfaage de p 8086 1) Description physique de p 8086 2) Schma fonctionnel de p 8086 3) Conception de bus systme de p 8086 4) Interfaage Mmoires 5) Les Interfaces parallles - Port parallle - Coupleur parallle 8255 6) Les Interface sries - Coupleur srie 8250 (Norme RS232) - Le bus SPI (8 bits, 16 bits) - Le bus I2C (standard, smart) 7) Le Timer 8253/8254 8) Le Coprocesseur mathmatique 9511 AMD VIII) Le mode interruptible Annexe jeu dinstructions 8086Bibliographie. I) II)

-2-

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Remerciement
Remerciements M. FRIHI et M. BOU-TALBI et M. BEN-SAOULA et M. LAKEL pour les efforts fournis aux tudiants de 4me et 5me anne lectronique pour comprendre le module.

-3-

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

I) Introduction : Un microprocesseur est un circuit intgr complexe. Il rsulte de lintgration sur une puce de fonctions logiques combinatoires (logiques et/ou arithmtique) et squentielles (registres, compteur,). Il est capable d'interprter et d'excuter les instructions d'un programme. Son domaine dutilisation est donc presque illimit. Le concept de microprocesseur a t cr par la socit INTEL. Cette Socit, cre en 1968, tait spcialise dans la conception et la fabrication de puces mmoire. la demande de deux de ses clients fabricants de calculatrices et de terminaux Intel tudia une unit de calcul implmente sur une seule puce. En 1971, cest la date de premier microprocesseur, le 4004, qui tait une unit de calcul 4 bits fonctionnant 108 kHz. Il rsultait de lintgration denviron 2300 transistors. II) Macro Architecture : 1) Exemple dune unit de transfert :
CS1\ RD1\

Registre 1
WR1\

N N N
RD2\

Bus de donnes

Registre 2
WR2\ CS2\

Discrtion des signaux : RD\ : signal de lecture active au niveau bas. WR\ : signal dcriture active au niveau bas. CS\ : activation de registre (validation de BUS) On demande dactiver les signaux de contrles (RD\, WR\, CS\) de chaque registre pour faire un transfert du registre1 vers le registre 2. Signaux de Signaux de Temps Commentaires contrles de contrles de registre 1 registre 2 CS\ RD\ WR\ CS\ RD\ WR\ T 1 1 1 1 1 1 Etat de repos T+1 0 0 1 1 1 1 Activation + lecture de reg 1 T+2 0 0 1 0 1 1 Activation de reg 2 T+3 0 0 1 0 1 0 Activation+criture dans reg2 T+4 1 1 1 1 1 1 Revient ltat initial

-4-

Programmation et Interfaage de p 8086 Exemple avec les circuits logiques :


CSA

Par : ATOUI HAMZA

A
D CLK Q D Latch Q

WRA

RDA DATA BUS

RDB
B

WRB

D CLK

Q D Latch

CSB

2) Architecture de lunit de dcodage et de contrle : Registre dinstruction Horloge Systme ROM dadresse pour le compteur programme Compteur Programme

Signaux de commandes

ROM des macros codes de chaque instruction

-5-

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

III) Conception de p vue de 8086 : La conception de INTEL est base sur une modlisation de raisonnement du cerveau humain. Pour simplifier les choses, je donne la scne de rsolution de sujet dexamen.

Mthode de la solution

Zone Code

Cerveau Sauvegarde les questions non rpondues Sujet dexamen Zone Data

(PROBLEME) Zone Stack

Intercalaire

Brouillon

Zone Extra

-6-

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

IV) Architecture du p 8086 : 1) Les bus : Un bus est un ensemble de fils qui assure la transmission du mme type dinformation. On retrouve trois types de bus vhiculant des informations en parallle dans un systme de traitement programm de linformation : Bus de donnes : cest un bus bidirectionnel qui assure la transmission et la rception des donnes en parallle. (Pour le 8086 est de taille 16 bits). Bus dadresse : cest un bus unidirectionnel qui permet la slection des informations traiter dans un espace mmoire (ou espace adressable) qui peut avoir 2n emplacements, avec n = nombre de conducteurs du bus d'adresses. (Dans le cas du 8086 est de taille 20 bits). Bus de contrle : constitu par quelques conducteurs qui assurent la synchronisation des flux d'informations sur les bus des donnes et des adresses.

2) Schma synoptique du p 8086 : Mmoire

BIU

Unit Dinterface

ES CS SS DS IP

La file dattente

5 4 3 2 1

EU

Systme de contrle
AH BH CH DH SP BP SI DI FLAG AL BL CL DL

Unit Dexcution

AX BX CX DX

U.A.L

-7-

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

3) Registres de travails : Le CPU 8086 comporte 8 registres usage gnral, chaque registre est identifi par son nom : AX Registre accumulateur 16 bits (compos de deux registres 8 bits, AH et AL). BX Registre d'adresses de base 16 bits (compos de deux registres 8 bits, BH et BL). CX Registre compteur 16 bits (compos de deux registres 8 bits, CH et CL). DX Registre de donnes 16 bits (compos de deux registres 8 bits, DH et DL). SP Registre pointeur de pile 16 bits. BP Registre pointeur de base 16 bits. SI Registre d'index source 16 bits. DI Registre d'index destination 16 bits. 4) Registres de segments : CS Segment de code contenant le programme en cours. DS Segment de donnes contenant l'adresse du segment de donnes dans lequel le programme dposera ses lments de travail (variables, champs, tableaux de branchement, etc.). ES Extra segment appartient au programmeur pour dfinir son utilisation. SS Segment de pile contenant l'adresse de la pile. Plus 2 registres spcieux : Le registre IP : pointeur dinstruction. Le registre FLAG : indique ltat en courant de p. 5) le registre FLAG : La plupart des instructions arithmtiques et logiques affectent le registre d'tat du processeur (ou registre de FLAG). 15 0

Overflow Direction Interupt Trace Sign Zero Auxilliary Parity Carry

-8-

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Comme vous pouvez le remarquer, c'est un registre 16 bits, chaque bit s'appelle un flag (ou un indicateur) et peut prendre la valeur 1 ou 0. CARRY flag : ce flag positionne 1 lorsque il y a un dbordement. 1 + 1 = CF 1 0 0 0 0 0 0 0 0 0 1

PARITY flag : la parit est celle du nombre de bits gaux 1 sil est pair PF est mis 1 .

1
XOR

XOR

NXOR

PF 0

AUXILLIARY flag : ce flag est 1 lorsqu'un dbordement a lieu de demi-mot de 8bits ou 16bits. AF 1 1 + 0 = 1 0 1 1 0 1 1 0 1 0

-9-

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

ZERO flag : ce flag est 1 lorsque tous les bits dun mot sont 0 .

1
OR

OR

NOR

SIGN flag : ce flag est 1 lorsque le rsultat est ngatif. Lorsque le rsultat est positif, le flag est 0. Ce flag prend la valeur du bit le plus fort (MSB).

1 SF Limage de dernier bit

OVERFLOW flag : ce flag est 1 lorsqu'un dbordement sign. 0 + 0 = OF 1 1 1 1 0 0 1 0 (+5) (Rsultat non sign = 12) (Rsultat sign = - 4). 1 1 1 (+7)

- 10 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

TRACE flag : ce bit est 1 signifie que lexcution est en mode pas pas (STEP BY STEP). INTERUPT flag : si ce bits 1 le p prend en conte les interruptions vienne de la pin INTR (INTERRUPT REQUESTE) les interruption hardware . DIRECTION flag : ce flag est utilis par quelques instructions pour traiter les chanes de donnes, Lorsque ce drapeau est plac 0, la chane est traite octet par octet en incrmentant, lorsque ce drapeau est plac 1, la chane est traite octet par octet en dcrmentant.

- 11 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

V) Les modes dadressages : Introduction : Avant de commencer, il faut rsoudre le problme de la taille de bus dadresse de 20 bits et la taille des registres internes du p (16 bit), la question qui il faut poser est Quelle est la solution proposer par INTEL pour fabriquer une adresse de 20 bits partir des registres de 16 bits ? . La solution est la suivante : Chaque registre de segment sera multipli par 16 plus un offset sur 16 bits comme lindique le schma au-dessous :

Segment

Offset

16
20 bits

16 bits

Adresse Logique ou Effective sur 16 bits Adresse physique sur 20 bits

20 bits

Bus dadresse de 20 bits 1) Adressage registre : ce mode utilise les registres internes de p, dans ce mode if faut respect la taille de diffrents registres. Exemple : Dans le plus part du cours, on va utiliser linstruction MOV (instruction de transfert) : Syntaxe : MOV Destination, Source ; Destination Source. MOV BX, AX ; Transfert du contenu de AX vers BX. MOV BX, AL ; Dclaration derreur par ce que BX est registre 16 bits et ; AL est registre 8 bits. MOV BL, BH ; Transfert du contenu de BH vers BL. 2) Adressage immdiat : est un mode de manipulation des valeurs latraux avec un registre interne ou une case mmoire. Exemple : MOV Alpha, 40h ; Alpha est une case mmoire de 8 bits. MOV AL, 102h ; dclaration dune erreur, AL registre de 8 bits, mais 102h est ; une valeur immdiate sur 16 bits. MOV AX, 40h ; cette instruction est juste ; Par ce que, on peut crire 40h 0040h valeur sur 16 bits. 3) Adressage direct : comme lindique son nom, cest la ralisation des oprations entre les registres internes de p et la mmoire. Exemple : MOV AL, Bta ; transfrer le contenu de la case mmoire Bta vers AL. MOV (2000h), BL ; transfrer l contenu de BL vers la case mmoire de ladresse ; 2000h par rapport au DATA segment.

- 12 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

4) Adressage indirect par registre : cest le mode daccs entre la mmoire et les registres internes de p par un intermdiaire, ces sont les registres pointeurs : (SI, DI, BX). Exemple : MOV AX, [BX] ; transfert de contenu de la case mmoire 16 bits pointer par BX ; par rapport au DATA segment vers AX. MOV [SI], DL ; transfert de contenu de DL vers la case mmoire 8 bits pointer ; par SI par rapport au DATA segment. 5) Adressage bas : tous simplement, il utilise la registres de base comme pointeur entre la mmoire et les registres internes de p ; les registres de base sont (BX, BP). Syntaxe : MOV [BX/BP + dplacement 8 bits ou 16 bits], source. MOV destination, [BX/BP + dplacement 8 bits ou 16 bits]. Exemple : MOV [BX+12], AL ; transfert de contenu de AL vers la case mmoire pointer par ; (BX+12) par rapport au DATA segment. MOV SI, [BP+400] ; transfert de contenu de la case mmoire 16 bits pointer par ; (BP+400) par rapport au STACK segment vers SI. 6) Adressage index : le mme mode que le bas, mais il utilise les registres dindexes comme pointeur ; les registres dindexes sont (SI, DI). Syntaxe : MOV [SI/DI + dplacement 8 bits ou 16 bits], source. MOV destination, [SI/DI + dplacement 8 bits ou 16 bits]. Remarque : les cases mmoires consultes ou modifies sont par rapport au DATA segment 7) Adressage bas index : cest un mode combine entre de modes dadressage comme lindique son nom. Syntaxe : DATA segment MOV [BX+ SI/DI + dplacement 8 bits ou 16 bits], source. MOV destination, [BX + SI/DI + dplacement 8 bits ou 16 bits]. STACK segment MOV [BP+ SI/DI + dplacement 8 bits ou 16 bits], source. MOV destination, [BP + SI/DI + dplacement 8 bits ou 16 bits]. 8) Adressage des entres sorties (I/O) : dans ce mode, le bus dadresse devient de taille 16 bits lespace adressable par I/O est 64 KO. Il utilise comme instructions daccs (IN, OUT). Types daccs

Direct
Nombre de ports autoriss sont 256 ports de 8 bits et 128 ports de 16 bits. En entre : IN accumulateur 8/16 bits, port En sortie OUT port, accumulateur 8/16 bits

Indirect
Nombre de ports autoriss sont 655356 ports de 8 bits et 32768 ports de 16 bits. En entre : MOV DX, port IN accumulateur 8/16 bits, DX En sortie : MOV DX, port OUT DX, accumulateur 8/16 bits

- 13 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

9) adressage relatif : ce type dadressage est utilis par les instructions de saut.

Adressage relatif

Saut Intra segment

Saut Inter segment

Ce type de saut change seulement le pointeur dinstructions (IP), et le CS ne change pas. 1) saut conditionnel : le saut nest ralis que si une condition est vrifie. Ladresse est calcule en ajoutant au contenue de (IP), avec cette valeur est un dplacement sign sur 8bits. Exemple : DEC CX JNZ ETIQUETTE CALL SEND_BYTE 2) saut inconditionnel : le saut est ralis quelque soit ltat de p, 2 types dadressage sont utiliss : a) ADR direct relatif : ladresse est calcule par lajout dun dplacement sign (IP). Long : (+32767 32768 bytes) Exemple : JMP LONG ETIQ1 Court : (+127 128) Exemple : JMP SHORT ETIQ2 b) ADR indirect : ici, la nouvelle valeur du contenu de (IP) est le contenu dune case mmoire ou dun registre. Exemple : JMP AX ; IP=AX (par registre) JMP WORD PTR [BX] ; IP=case de 16 bits point par BX par rapport DS (par mmoire).

Dans ce mode de saut le changement se fait sur 32 bits [CS:IP]. 1) ADR direct : la valeur de saut est prcise le programme aprs le code de linstruction de saut Exemple : JMP 6060h:4000h ; CS 6060h IP 4000h. 2) ADR indirect : la valeur de saut (32bits) se trouve dans la mmoire, dans ce mode on utilise le mode dadressage indirect. Exemple : JMP DWORD PTR [BX]

BX BX+2

XX XX YY YY

IP CS IP CS

[BX]. [BX+2]. XXXX. YYYY.

- 14 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

10) Adressage vectoris : ce mode dadressage est utilis seulement pour le traitement des dinterruption. Le mot VECTEUR est ladresse de lISR. (INTERUPT SERVICE ROUTINE) dans le premier Kilo bytes du bloc mmoire (00000h : 003FFh). Cet escape mmoire est segment en 256 vecteurs 4 bytes par vecteur. Pour quoi 4 bytes ? Par ce que le vecteur compos par la valeur de (CS) et la valeur de (IP) de lISR. Lorganisation de la table des vecteurs :
00000h IP (ISR0) bas IP (ISR0) haut CS (ISR0) bas CS (ISR0) haut Vecteur 0

N*4

IP (ISRN) bas IP (ISRN) haut CS (ISRN) bas CS (ISRN) haut Vecteur N

003FCh

IP (ISR255) bas IP (ISR255) haut CS (ISR255) bas CS (ISR255) haut Vecteur 255

Le mcanisme gnral de traitement dune interruption :


MAIN PROGRAM ISR

T1

INTR

IRET

T2

- 15 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Dans (T1) le p sauvegarde le contenu de ladresse de retour (CS : IP) et le registre FLAG dans le sommet de la PILE de la faon suivante : -IP CS le registre FLAG. -Et mettre le registre FLAG INTERUPT (IF) zro. Le p excute le (ISR) jusqu la dernire instruction (IRET), cette dernire dpile le sommet de la (PILE) par lordre suivant le registre FLAG CS IP. Et autorise linterruption externe (INTR). Les interruptions sont classes en deux : Les interruptions Externes : Le p 8086 contient 3 sources dinterruptions : 1) Reset : rinitialisation du p : FLAG : 0000h CS : FFFFh IP : 0000h DS : 0000h ES : 0000h SS : 0000h Ladresse de dmarrage est : ADR_START = CS*10h+IP=FFFF0H. 2) NMI : (NO MASKABLE INTERUPT) Cette IT interrompe directement la CPU est rserve le vecteur V2. 3) INTR : (INTERUPT REQUASTE) Cest une IT autorise si IF=1 sinon elle est masque. Les interruptions internes : Il existe 2 types de IT : 1) IT Logicielle : par linstruction INT : Syntaxe : INT Numro_de_Vecteur Exemple : INT 21h 2) IT Automatiques : Exemple : a) dpassement de capacit (OF=1) INTO (vecteur 04h) b) division par zro (vecteur 00h) c) excution pas pas avec TF=1 (Vecteur 01h)

La relation entre le numro de vecteur et ladresse de la table des vecteurs : Pour obtenir ladresse physique de vecteur de IT, il faut multiplier le numro de vecteur par 4. Exemple : Le vecteur 02h (NMI) : NVECTEUR*4 = 2*4=8 ADR (V2)=00008h dans la table des vecteurs. La procdure dtaille de lexcution dune IT de type INTR sur p 8086 : On remarque que toutes les IT leur numros de vecteur est visibles sauf la source (INTR). INTEL propose la gestion de une IT Hard par la faon suivante : - la prise en conte dune IT de type (INTR) par la CPU est autorise par (IF=1). - Complt lexcution de linstruction en cours. - Envoye 2 impulsions ngatives sur la pin (INTA\) (INTERUPT ACK) vers le priphrique qui gnre le IT. - Le priphrique correspond rependre par lmission de vecteur de IT sur le BUS de donnes D0/D7. - Le p lire le BUS et multiplier par 4 pour gnrer ladresse physique de vecteur dans la table de IT. - Mettre le flag IF=0. - Sauvegarde les adresses de retours et le FLAG dans la PILE. - Chargement de CS:IP par ladresse de ISR. - Excution de la routine dinterruption (ISR). - Aprs lexcution la CPU dpile les adresses de retour vers le MAIN PROGRAM et active les interruptions par (IF=1).

- 16 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Schma synoptique de la procdure de gestion de IT par (INTR) : Numro de vecteur * 4 4 CPU 8086
(CS : IP) de ISR

INTA

INTR

3 Le numro de vecteur dans le bus D0/D7 T1

TV

Priphrique
6
ISR

IRET

MAIN PROGRAM

T2

Demande de IT

Bloc mmoire de 1MB

T1 : IF = 0, sauvegarde ladresse de retour et le registre FLAG. T2 : Dpile le registre FLAG, ladresse de retour et IF = 1. Jeu dinstructions : - 17 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Chaque microprocesseur reconnat un ensemble dinstructions appel jeu dinstructions (Instruction Set) fix par le constructeur. Pour les microprocesseurs classiques, le nombre dinstructions reconnues varie entre 75 et 150 (microprocesseurs CISC : COMPLEX INSTRUCTION SET COMPUTER). Il existe aussi des microprocesseurs dont le nombre dinstructions est trs rduit (microprocesseurs RISC : REDUCED INSTRUCTION SET COMPUTER) : entre 10 et 30 instructions, permettant damliorer le temps dexcution des programmes. Une instruction est dfinie par son code opratoire, valeur numrique binaire difficile manipuler par ltre humain. On utilise donc une notation symbolique pour reprsenter les instructions : les mnmoniques. Un programme constitu de mnmoniques est appel programme en assembleur. Les instructions peuvent tre classes en 7 groupes : Instructions de transferts Instructions arithmtiques Instructions logiques Instructions de traitement de chane Instructions de saut et dappel de sous-programmes Instructions des interruptions logicielles Instructions de contrle du p

A) Instructions de Transferts : Ces sont les instructions suivantes : MOV PUSH PUSHF POP POPF XCHG XLAT LEA LDS LES LAHF SAHF IN OUT 1) Instruction MOV: Copi loprande2 vers loprande1. Source MOV Oprande2 Oprande1 Destination

Syntaxe : MOV Destination, Source ou MOV Op1, Op2 La source peut tre : Registre, mmoire, valeur immdiate (latrale) La destination peut tre : Registre, mmoire. Exemple : MOV AL, BL ; Transfrez le contenu de BL vers AL MOV AX, SI ; Transfrez le contenu de SI vers AX MOV Bta, CL ; Transfrez le contenu de CL vers la case mmoire Bta MOV CL
XX

XX

Bta

Des conseilles :

Bloc Mmoire

- 18 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

1- Interdit dutiliser le registre (CS) comme destination. 2- Interdit de lire ou crire dans le registre (IP). 3- Interdit de copier la valeur dun registre de segment vers un autre registre de segment, il faut passer par une case mmoire ou par un registre interne de 16 bits. 4- Interdit de copier une valeur immdiate vers un registre de segment, il faut passer par un registre interne ou une case mmoire de 16 bits. 5- Interdit de transfrer le contenu dune case mmoire vers une autre, if faut passer par un registre interne de mme taille. 2) Instruction PUSH : Empile une valeur de 16 bits dans le sommet de Pile (STACK SEGMENT). Syntaxe : PUSH Source ; la source peut tre un registre ou une case mmoire de 16 bits La destination est une case mmoire de 16 bits pointer par SS : [SP]. Exemple : PUSH DX Sens de transfert PUSH CX BAS HAUT CX
YY XX

CH DX
BB

CL
YY AA XX BB AA

La position finale aprs lexcution de PUSH CX

DH

DL Position Initiale de SP

La position de SP aprs lexcution de PUSH DX

Aprs chaque excution de linstruction PUSH la valeur de SP dcrmente automatiquement par deux (2) SP SP-2. 3) Instruction PUSHF : Empilement de registre FLAG vers le sommet de la PILE. Syntaxe : PUSHF ; sans oprande. La source est le registre FLAG La destination est une case mmoire de 16 bits pointer par SS : [SP]. FLAG FLAGH FLAGL Position Initiale de SP 4) Instruction POP : La position finale SP SP-2

- 19 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Dpile une valeur de 16 bits depuis le sommet de la Pile (STACK SEGMENT) Syntaxe : POP Destination ; la destination peut tre un registre ou une case mmoire de 16 bits La source est une case mmoire de 16 bits pointer par SS : [SP]. Exemple : POP AX POP SI

AA BB

Position Initiale de SP SP SP+2

AX
BB CC

CC DD EE XX

AH SI
DD

AL

EE

YY ZZ

La position finale SP SP+2

Sens de transfert HAUT BAS Aprs chaque excution de linstruction POP la valeur de SP incrmente automatiquement par deux (2) SP SP+2. 5) Instruction POPF : Dpilement de registre FLAG depuis le sommet de la Pile (STACK SEGMENT). Syntaxe : POPF ; sans oprande. La source est une case mmoire de 16 bits pointer par SS : [SP].

AA

Position Initiale de SP La position finale SP SP+2

FLAG
AA BB

BB CC DD XX

6) Instruction XCHG :

- 20 -

Programmation et Interfaage de p 8086 Echange les valeurs de deux oprandes.

Par : ATOUI HAMZA

Oprande1

Permutation

Oprande2

Syntaxe : XCHG Op1, Op2 Exemple : XCHG AL, AH XCHG Alpha, BX XCHG DX, Bta 7) Instruction XLAT : Consultation dun octet (Byte) depuis une table pointer par DS : [BX+AL]. Syntaxe dutilisation: On place ladresse de la table dans le registre BX MOV BX, OFFSET TABLE On place lindice de loctet consulter dans AL MOV AL, indice ; 0 indice 255 XLAT ; AL DS: [BX+AL]. Exemple : MOV BX, OFFSET TAB MOV AL, 03h XLAT DS : BX
DS : TAB

XY

AL
XY

0 1 2 3 4 5 6 7

Les indices

Aprs lexcution de linstruction XLAT la valeur dans AL est cras par le contenu de la case mmoire pointer par DS : [BX+AL].

8) Instruction LEA : - 21 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Chargement de ladresse effective dune case mmoire dans un registre 16 bits. Syntaxe : LEA registre16, mmoire. Exemple : Alpha DB 40h ; dclaration dune case mmoire dans le DATA SEGMENT ; Initialis par 40h LEA SI, Alpha (1) MOV AL, Alpha (2) Dans (1) : SI contient ladresse effective de la case Alpha. Dans (2) : AL contient le continu de la case Alpha (AL 40h). 9) Instruction LDS : Chargement dun pointeur long (32 bits) partir dune case mmoire de 16 bits dans Le registre destination de 16 bits et le registre de segment DS. Syntaxe : LDS destination, mmoire16. Exemple : MOV SI, 0100h LDS BX, WORD PTR [SI] BX DS le contenu de la case mmoire 16 bits DS : [SI]. le contenu de la case mmoire 16 bits DS : [SI+2].

BX BH DS BL

SI

0100h 0101h 0102h 0103h

10) Instruction LES : Chargement dun pointeur long (32 bits) partir dune case mmoire de 16 bits dans Le registre destination de 16 bits et le registre de segment ES. Syntaxe : LES destination, mmoire16. Cette instruction est semblable linstruction LDS. Exemple : LES DI, WORD PTR [BX]. DI le contenu de la case mmoire DS : [BX]. ES le contenu de la case mmoire DS : [BX+2].

11) Instruction LAHF :

- 22 -

Programmation et Interfaage de p 8086 Charge AH par les 8 bits du poids faible de registre FLAG. Syntaxe : LAHF ; sans oprande. AH X : non utilis. SF ZF X AF X

Par : ATOUI HAMZA

PF

CF

12) Instruction SAHF : Place dans les 8 bits du poids faible de registre FLAG le contenu de AH. Syntaxe : SAHF ; sans oprande AH X : non utilis. 13) Instruction IN : Transfert de la donne lue dans un port I/O vers laccumulateur 8 bits (AL) ou 16 bits (AX). Il existe deux modes daccs, laccs direct et laccs indirect. Accs direct : Syntaxe : IN AL, PORT ; lecture dun port de 8 bits avec 0 PORT 255. IN AX, PORT; lecture dun port de 16 bits avec 0 PORT 255. PORT est ladresse du port sur 8 bits. Accs indirect : On va mettre ladresse du port dans le registre DX. MOV DX, PORT IN AL, DX ; lecture dun port de 8 bits avec 0000h PORT FFFFh. IN AX, DX ; lecture dun port de 16 bits avec 0000h PORT FFFFh. 14) Instruction OUT : Transfert de la valeur dans accumulateur (AL ou AX) vers un PORT I/O. Il existe deux modes daccs comme linstruction IN. Accs direct : Syntaxe : OUT PORT, AL ; criture dans un port une valeur de 8 bits. OUT PORT, AX ; criture dans un port une valeur de 16 bits. PORT est ladresse du port sur 8 bits 0 PORT 255. Accs indirect : On va mettre ladresse du port dans le registre DX. MOV DX, PORT MOV AL, data8 OUT DX, AL ; criture dans un port une valeur de 8 bits. MOV AX, data16 OUT DX, AX; criture dans un port une valeur de 16 bits. PORT est ladresse du port sur 16 bits 0000h PORT FFFFh. B) Instructions Arithmtiques : SF ZF X AF X PF X CF

- 23 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

ADD ADC INC SUB SBB DEC CMP NEG MUL DIV IMUL IDIV CBW CWD Instructions dajustements ASCII : AAA AAS AAM AAD Instructions dajustements Dcimales : DAA DAS. 1) Instruction ADD : Addition entre deux oprandes. Syntaxe : ADD Destination, Source ; Destination destination+source. La destination peut tre : registre, mmoire. La source peut tre : registre, mmoire, valeur immdiate. Les FLAG affects : CF OF AF SF ZF Exemple : MOV AL, 03h MOV BL, 02h ADD AL, BL ; AL AL+BL AL=3+2=5 Plus la mise jour des FLAG : CF 0 ; OF 0 ; AF 0 ; SF 0 ; ZF 2) Instruction ADC : Addition entre deux oprandes avec carry. Syntaxe : ADC Destination, Source ; Destination destination+source+CF. La destination peut tre : registre, mmoire. La source peut tre : registre, mmoire, valeur immdiate. Les FLAG affects : CF OF AF SF ZF Exemple : STC ; forc le CF 1 . MOV DL, 08h MOV DH, 00h ADC DL, DH ; DL DL+DH+CF DL=8+0+1=9. Plus la mise jour des FLAG : CF 0 ; OF 0 ; AF 0 ; SF 0 ; ZF 3) Instruction INC : Incrmentation dun oprande. Syntaxe : INC Destination ; Destination destination+1. La destination peut tre : registre, mmoire. Les FLAG affects : OF AF SF CF reste inchang. Exemple : MOV Alpha, 0Fh INC Alpha ; Alpha Alpha+1 Alpha=10h. Plus la mise jour des FLAG : CF U ; OF 0 ; AF

PF

0 ; PF

1.

PF

0 ; PF

1.

ZF

PF

1 ; SF

0 ; ZF

0 ; PF

0.

4) Instruction SUB :

- 24 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Soustraction entre deux oprandes. Syntaxe : SUB Destination, Source ; Destination destination source. La destination peut tre : registre, mmoire. La source peut tre : registre, mmoire, valeur immdiate. Les FLAG affects : CF OF AF SF ZF 5) Instruction SBB : Soustraction entre deux oprandes avec carry. Syntaxe : SBB Destination, Source ; Destination destination source CF. La destination peut tre : registre, mmoire. La source peut tre : registre, mmoire, valeur immdiate. Les FLAG affects : CF OF AF SF ZF 6) Instruction DEC : Dcrmentation dun oprande. Syntaxe : DEC Destination ; Destination destination 1. La destination peut tre : registre, mmoire. Les FLAG affects : OF AF SF CF reste inchang.

PF

PF

ZF

PF

7) Instruction CMP : La comparaison entre deux oprandes. Syntaxe : CMP Op1, Op2 ; Rsultat Op1 Op2. Rsultat est un registre virtuel, mais le plus important, cest la mise jour des FLAG. CF OF AF SF ZF PF Op1 peut tre : registre, mmoire. Op2 peut tre : registre, mmoire, valeur immdiate. Exemple: MOV AL, 40h MOV AH, 30h CMP AL, AH Plus la mise jour des FLAG : CF 0 ; OF 0 ; AF 0 ; SF 0 ; ZF 0 ; PF 0. On peut dire que AL AH. On peut dire que AL plus grand que AH.

8) Instruction NEG : - 25 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

La ngation dune valeur (changement de signe en complment deux). Syntaxe : NEG Destination ; Destination destination * (-1). La destination peut tre : registre, mmoire. Les FLAG affects : CF OF AF SF ZF Algorithme de la ngation en complment deux : 1- invers tous les bits de loprande. 2- Additionn 1 au rsultat prcdent. Exemple : MOV AL, 05h NEG AL ; AL AL*(-1) 0 0 0 0 0 1 0 1

PF

Inversion bit bit


1 1 1 1 1 0 1 0

Addition dune unit


1 1 1 1 1 0 1 1

AL = FBh la reprsentation de (-5) en complment 2. Dune faon gnrale le calcul de complment (n) dune valeur est calcul par lalgorithme suivant : Le complment (n) inversion bit bit (valeur) + n/2. (Avec (n) est un entier pair). Exemple de complment 10 : COM10 NOT (Value) + 05h. 9) Instruction MUL : Multiplication entre laccumulateur et un oprande (non sign). Syntaxe : MUL Oprande. Si loprande est une valeur sur 8 bits : AX AL*Oprande. Si loprande est une valeur sur 16 bits : DX : AX AX*Oprande. Loprande peut tre : registre, mmoire. Les FLAG affects : CF OF Le ZF, SF, PF, et AF sont inconnus (X). Exemple : MOV AL, 20h MOV CL, 02h MUL CL ; AX AL*CL. AX=20h*02h=40h.

10) Instruction DIV:

- 26 -

Programmation et Interfaage de p 8086 Division entre laccumulateur et un oprande (non sign). Syntaxe : DIV Oprande. Si loprande sur 8 bits : AL AX / Oprande ; AH Reste. Si loprande sur 16 bits : AX (DX : AX) / Oprande ; DX Loprande peut tre : registre, mmoire. Le CF, OF, ZF, SF, PF, et AF sont inconnus (X). Exemple : MOV DX, 0000h MOV AX, 2000h MOV CX, 0002h DIV CX ; AX (DX: AX) / CX ; AX (00002000h)/2=1000h. ; DX 0000h.

Par : ATOUI HAMZA

Reste.

11) Instructions IMUL et IDIV : La multiplication et la division de laccumulateur avec un oprande (sign). Les mmes syntaxes que MUL et DIV. 12) Instruction CBW : Conversion de laccumulateur de 8 bits un mot de 16 bits sign. Syntaxe : CBW ; sans oprande. La source est laccumulateur de 8 bits (AL). La destination est laccumulateur de 16 bits (AX). Les FLAG reste inchang. Exemple : MOV AL, 50h ;( SF=0). CBW ; AX 0050h MOV AL, 80h; (SF=1). CBW ; AX FF80h 13) Instruction CWD : Conversion de laccumulateur de 16 bits un mot de 32 bits sign. Syntaxe : CWD ; sans oprande. La source est accumulateur de 16 bits. La destination est forme par la concatnation entre les registres DX et AX. Les FLAG reste inchang. Exemple : MOV AX, 4002h ; (SF=0) CWD ; DX: AX 00004002h. MOV AX, 80FFh CWD ; (SF=1) ; DX: AX

FFFF80FFh.

Instructions dajustements ASCII

- 27 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Avant dtudier ce type dinstructions, il faut passer par la dfinition des diffrentes reprsentations dun nombre BCD.

Nombre BCD

BCD compact

BCD tendu

BCD tendu classique : Y X 0 X

BCD tendu ASCII : 3 X

X et Y sont reprsents sur 4 bits. 00h X 09h 00h Y 09h Valeur max : 99h. Valeur min : 00h.

X est reprsent sur 4 bits. 00h X 09h Valeur max : 09h Valeur min : 00h Remarque : cest la reprsentation des chiffres.

X est reprsent sur 4 bits. 00h X 09h Valeur max : 39h Valeur min : 30h Remarque : cest la reprsentation des chiffres en code ASCII.

14) Instruction AAA : Ajustement ASCII aprs addition. Syntaxe : AAA ; sans oprande. Algorithme : Corrige le rsultat dans AL et AH aprs addition lors d'une opration en valeurs BCD cod ASCII. Si NIBBLE (quartet ou demi octet) de poids faible dans AL > 9 ou AF = 1 alors : AL = AL + 6; AH = AH + 1; AF = 1; CF = 1;

Sinon
AF=0; CF=0; Fin si. Dans les deux cas le NIBBLE de poids fort de (AL) sera effacer. Exemple :

- 28 -

Programmation et Interfaage de p 8086 MOV AH, 00h MOV AL, 4 MOV BL, 7 ADD AL, BL AAA

Par : ATOUI HAMZA

; effac AH. ; AL 34h ; BL 37h ; AL 34h+37h=6Bh. ; AX 0101h la reprsentation de la valeur 11 BCD ; tendu classique. 0 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1

34h + 37h

= 6Bh 0 1 1 0 1 0 1 1 AF=0, mais le NIBBLE de poids faible de AL > 9 on ajoute AL la valeur 06h. 6Bh + 06h 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 1 1

= 71h 0 1 1 1 On va craser le NIBBLE de poids fort de AL. 71h AND 0Fh = 01h 0 0 0 0 0 0 0 0 0 1 1 1

0 1 0

0 1 0

0 1 0

1 1 1

Et AH AH+1. A la fin : AL 01 et AH CF=1 et AF=1.

01

AX

0101h.

Remarque : Les FLAG affects sont CF, AF ; et ZF, OF, SF, PF restes indfinis (X). 15) Instruction AAS : Ajustement ASCII aprs soustraction. Syntaxe : AAS ; sans oprande. Algorithme : Corrige le rsultat dans AL et AH aprs soustraction lors d'une opration en valeurs BCD cod ASCII. Si NIBBLE (quartet ou demi octet) de poids faible dans AL > 9 ou AF = 1 alors : AL = AL 6; AH = AH 1; AF = 1; CF = 1;

Sinon
AF=0 ; CF=0 ; Fin si Dans les deux cas le NIBBLE de poids fort de (AL) sera effacer. Exemple :

- 29 -

Programmation et Interfaage de p 8086 MOV AH, 00h MOV AL, 4 MOV BL, 7 SUB AL, BL AAS ; AX FF07h ; Cest le complment 10 de la valeur 3.

Par : ATOUI HAMZA

16) Instruction AAM : Ajustement ASCII aprs multiplication. Syntaxe : AAM ; sans oprande. Algorithme : Corrige le rsultat dans AX en valeur BCD tendu classique aprs multiplication. AH AL / 10 et AL le reste de la division. Exemple : MOV AH, 00h MOV AL, 04h MOV BL, 04h MUL BL ; AX 0010h AAM ; AX 0106h ; Cest la reprsentation de la valeur BCD tendu classique de 16. Les FLAG affects sont : ZF SF PF Le CF, OF, AF reste indfinis (X). 17) Instruction AAD : Ajustement ASCII avant division. Syntaxe : AAD ; sans oprande. Algorithme : Prpare le contenu de (AX) une division dcimale. En effet, elle multiple par 10 le contenu de AH et lajoute au contenu de AL puis met le contenu de AH zro On passe de BCD tendu vers de code binaire (HEXA). Exemple : MOV AX, 0106h ; la valeur 16 en BCD tendu. AAD ; AX 0010h. Les FLAG affects : ZF SF PF Le CF, OF, AF reste indfinis (X).

Instructions dajustement dcimales

- 30 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

18) Instruction DAA : Ajustement dcimal aprs addition. Syntaxe : DAA ; sans oprande. Algorithme : Corrige le rsultat de l'addition de deux valeurs BCD compactes. Si le demi octet de poids faible dans AL > 9 ou AF = 1 alors : AL = AL + 06h ; AF = 1 ; Fin si.

Si AL > 9Fh ou CF = 1 alors : AL = AL + 60h; CF = 1;


Fin si. Exemple : MOV AL, 29h MOV BL, 35h ADD AL, BL DAA 29h + 35h 0 0 1 1 0 1 0 1

; AL ; AL 0

5Eh 64h 0 1 0 1 0 0 1

= 5Eh 0 1 0 1 1 1 1 0 AF=0; mais le NIBBLE de poids faible de AL > 9 on ajoute AL la valeur 06h. 5Eh + 06h = 64h AF=1. Les FLAG affects : CF 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 1 1 0

OF

AF

SF

ZF

PF

19) Instruction DAS : Ajustement dcimal aprs soustraction. Syntaxe : DAS ; sans oprande. Algorithme : Corrige le rsultat de la soustraction des deux valeurs BCD compactes. Si le demi octet de poids faible dans AL > 9 ou AF = 1 alors : AL = AL 6 ; AF = 1 ; Si AL > 9Fh ou CF = 1 alors : AL = AL - 60h; CF = 1; Exemple: - 31 -

Programmation et Interfaage de p 8086 MOV AL, 65h MOV BL, 27h SUB AL, BL DAS 65h 27h 0 0 1 1 0 1

Par : ATOUI HAMZA

; AL ; AL 0

3Eh 38h 1 1 0 0 1 0 1 1 1 1 0

= 3E 0 0 1 AF=1 et le NIBBLE de poids de AL > 9 3Eh 06h = 38h 0 0 0 0 0 1 0 0 1

1 1 1 on soustraire 06h. 1 0 1 1 0 1 1 1 0

1 1 0

0 0 0

Les FLAG affects : CF OF AF SF ZF PF

C) Instructions Logiques :

- 32 -

Programmation et Interfaage de p 8086 OR XOR AND TSET NOT Instructions de dcalages : SHL SAL SHR SAR Instructions de rotations : ROL ROR RCL RCR

Par : ATOUI HAMZA

1) Instruction OR : OU logique entre deux oprandes bit bit. Syntaxe : OR Destination, Source ; Destination destination (ou) source. La destination peut tre : registre, mmoire. La source peut tre : registre, mmoire, immdiate. Les FLAG affects : ZF SF PF CF=0 ; OF=0 ; AF=X (X : tat inconnu). Exemple : MOV AL, 01h MOV gamma, 02h OR AL, gamma ; AL AL (ou) gamma = 03h. 2) Instruction XOR: OU Exclusif entre deux oprandes bit bit. Syntaxe : XOR Destination, Source ; Destination destination (ou exclusif) source. La destination peut tre : registre, mmoire. La source peut tre : registre, mmoire, immdiate. Les FLAG affects : ZF SF PF CF=0 ; OF=0 ; AF=X (X : tat inconnu). Exemple : MOV DL, 55h XOR DL, 0FFh ; DL DL (XOR) 0FFh = 0AAh. 3) Instruction AND : ET logique entre deux oprandes bit bit. Syntaxe : AND Destination, Source ; Destination destination (et) source. La destination peut tre : registre, mmoire. La source peut tre : registre, mmoire, immdiate. Les FLAG affects : ZF SF PF CF=0 ; OF=0 ; AF=X (X : tat inconnu). Exemple : MOV CL, 32h AND CL, 0Fh ; CL CL (ET) 0Fh = 02h. Astuces sur les instructions logiques (OR, XOR, AND) : 1. Forage 1 : cest le OR avec un 1 . 2. Masquage 0 : cest le AND avec un 0 . 3. Basculement : cest le XOR avec un 1 . Exercice :

- 33 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Donnez chaque fois la valeur immdiate qui ralise les oprations suivantes : 1. forcez le bit (1) de registre AL. 2. masquez les bits (3 5) de registre AL. 3. basculez les bits (2, 7) de registre AL. 4) Instruction TEST : ET logique entre deux oprandes positionne uniquement les FLAG. Syntaxe : TEST Op1, Op2 ; Rsultat Op1 (ET) Op2. ; Plus la mise jour des FLAG. Op1 peut tre : registre, mmoire. Op2 peut tre : registre, mmoire, immdiate. Les FLAG affects : ZF SF PF CF=0 ; OF=0 ; AF=X (X : tat inconnu). Exemple : MOV AL, 0F2h MOV BL, 3Dh TEST AL, BL F2h (AND) 3Dh = 30h 0 0 0 0 1 1 1 1 1 0 1 0 0 0 1 0 1 1 1 1 0 0 1 0

ZF=0, SF=0, PF=1, CF=0, OF=0, AF=X. 5) Instruction NOT: Inversion bit bit dun oprande. Syntaxe : NOT Destination ; Destination La destination peut tre : registre, mmoire. Exemple : MOV AL, 45h NOT AL ; AL 0BAh.

destination.

Instructions de Dcalages 6) Instructions SHL et SAL : Dcalage arithmtique et logique gauche. Syntaxe : SHL Destination, N Si N=1 alors la syntaxe devienne SHL Destination, 1. Sinon le nombre de dcalage a effectu sur la destination mettre dans CL : MOV CL, N SHL Destination, CL La destination peut tre : registre, mmoire. Les FLAG affects : CF OF La synoptique de dcalage :

- 34 -

Programmation et Interfaage de p 8086 La destination avant le dcalage

Par : ATOUI HAMZA

B7 CF X

B6

B5

B4

B3

B2

B1

B0 0

Le sens de dcalage

La destination aprs le dcalage

B6 CF
B7

B5

B4

B3

B2

B1

B0

Astuce : Cette instruction ralise lopration suivante : Destination destination * 2N. 7) Instruction SAR : Dcalage arithmtique droite. Syntaxe : La mme syntaxe que SHL. Et les mmes FLAG affects. La synoptique de dcalage : La destination avant le dcalage

B7

B6

B5

B4

B3

B2

B1

B0 CF X

Le sens de dcalage La destination aprs le dcalage

B7

B7

B6

B5

B4

B3

B2

B1 CF
B0

Cette opration ralise aussi la fonction suivante : Destination destination / 2N (sign).

8) Instruction SHR :

- 35 -

Programmation et Interfaage de p 8086 Dcalage logique droite. Syntaxe : La mme syntaxe que SHL. Et les mmes FLAG affects. Synoptique de dcalage : La destination avant le dcalage

Par : ATOUI HAMZA

B7 0

B6

B5

B4

B3

B2

B1

B0 CF X

Le sens de dcalage La destination aprs le dcalage

B7

B6

B5

B4

B3

B2

B1 CF
B0

Elle ralise la mme fonction que SAR mais pour les nombres non signs. Instructions de Rotations 9) Instructions ROL et ROR : Rotation gauche et droite. Syntaxe : La mme syntaxe que SHL. Et les mmes FLAG affects. Synoptique de rotation : La destination avant la rotation X CF Le sens de rotation gauche B7 B6 B5 B4 B3 B2 B1 B0 X CF Le sens de rotation droite CF
B7

B7

B6

B5

B4

B3

B2

B1

B0

La destination aprs la rotation B6 B5 B4 B3 B2 B1 B0 B7

B0

B7

B6

B5

B4

B3

B2

B1

B0

CF 10) Instructions RCL et RCR :

- 36 -

Programmation et Interfaage de p 8086 Rotation gauche et droite avec carry. Syntaxe : La mme syntaxe que SHL. Et les mmes FLAG affects. Synoptique de rotation : La destination avant la rotation CF X B7 B6 B5 B4 B3

Par : ATOUI HAMZA

B2

B1

B0

Le sens de rotation gauche CF B7 B6 B5 B4 B3 B2 B1 B0 X

Le sens de rotation droite

La destination aprs la rotation CF


B7

B6

B5

B4

B3

B2

B1

B0

CF X B7 B6 B5 B4 B3 B2 B1
B0

D) Instructions de traitement de chane :

- 37 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Une chane de caractre est un tableau de type octets ou mots. Les instructions de traitement de chanes utilisent uniquement ladressage index les registres utiliss sont : pour la source DS:SI, et pour la destination ES:DI. A chaque excution dune instruction de traitement de chane, les registres dindexes sont incrments ou dcrments selon le flag DF de registre dtat. Lensemble des instructions de traitement de chane : LODS STOS SCAS MOVS CMPS 1) Instruction LODS (LODSB, LODSW) : Chargement dun octet ou un mots depuis DS : [SI] dans laccumulateur 8 ou 16 bits plus la mise jour de lindexe SI. Syntaxe : LODS ; sans oprande. Le cas de AL : LODSB ; AL DS : [SI]. ; SI SI1 selon DF. Le cas de AX : LODSW ; AX DS : [SI]. ; SI SI2 selon DF. Si DF=0 alors, on va incrmenter lindexe SI Sinon on dcrmente. Exemple : CLD ; effac DF LEA SI, TAB ; chargement de ladresse du TAB dans SI LODSB ; AL DS : [SI]. ; SI SI+1. Le registre FLAG reste inchang. 2) Instruction STOS (STOSB, STOSW) : Copie le contenu de registre accumulateur 8 ou 16 bits dans la case mmoire pointer par ES : [DI] plus la mise jour de lindexe DI selon la valeur de flag DF. Syntaxe : STOS ; sans oprande. Le cas de AL : STOSB ; ES : [DI] AL. ; DI DI1 selon DF. Le cas de AX : STOSW ; ES : [DI] AX. ; DI DI2 selon DF. Si DF=0 alors, on va incrmenter lindexe DI Sinon on dcrmente. Exemple : STD ; la mise 1 du DF. LEA DI, TAB ; chargement de ladresse du TAB dans DI. MOV AX, 55AAh STOSW ; ES: [DI] AX=55AAh. ; DI DI - 2. Le registre FLAG reste inchang. 3) Instruction SCAS (SCASB, SCASW) :

- 38 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Comparaison entre la case mmoire pointer par ES : [DI] avec laccumulateur, plus la mise jour de lindexe DI et le registre dtat. Syntaxe : SCAS ; sans oprande. Le cas de AL : SCASB ; ralisation de linstruction arithmtique CMP ES : [DI], AL ; DI DI1 selon DF. ; mise jour de registre dtat. Le cas de AX : SCASW ; ralisation de linstruction arithmtique CMP ES : [DI], AX ; DI DI2 selon DF. ; mise jour de registre dtat. Si DF=0 alors, on va incrmenter lindexe DI Sinon on dcrmente. Les FLAG affects : CF OF AF SF ZF PF Exemple : CLD ; effac le DF. MOV DI, offset TAB ; chargement de ladresse du TAB dans DI. MOV AL, A ; chargement de AL par le caractre A . SCASB ; CMP ES : [DI], AX. ; DI DI+1. ; mise jour de registre dtat. 4) Instruction MOVS (MOVSB, MOVSW) : Copie le contenu de la case mmoire pointer par DS : [SI] dans la case mmoire pointer par ES : [DI], plus la mise jour les indexes SI et DI. Syntaxe : MOVS ; sans oprande. Le cas dune case mmoire 8 bits : MOVSB ; ES : [DI] DS : [SI]. ; SI SI1 selon DF. ; DI DI1 selon DF. Le cas dune case mmoire 16 bits : MOVSW ; ES : [DI] DS : [SI]. ; SI SI2 selon DF. ; DI DI2 selon DF. Si DF=0 alors, on va incrmenter les indexe SI et DI. Sinon on dcrmente. Exemple : CLD ; effac le DF LEA SI, TABSRC ; chargement de ladresse de la table source dans SI. LEA DI, TABDEST ; chargement de ladresse de la table destination dans DI. MOVSW ; ES : [DI] DS : [SI]. ; SI SI+2. ; DI DI+2. Le registre FLAG reste inchang.

5) Instruction CMPS (CMPSB, CMPSW) :

- 39 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Comparaison entre la case mmoire pointer par ES : [DI] avec la case mmoire pointer par DS : [SI], plus la mise jour des indexes SI, DI et le registre dtat. Syntaxe : CMPS ; sans oprande. Le cas dune case mmoire 8 bits : CMPSB ; ralisation de linstruction CMP ES : [DI], DS : [SI]. ; mise jour de registre FLAG. ; SI SI1 selon DF. ; DI DI1 selon DF. Le cas dune case mmoire 16 bits : CMPSB ; ralisation de linstruction CMP ES : [DI], DS : [SI]. ; mise jour de registre FLAG. ; SI SI2 selon DF. ; DI DI2 selon DF. Si DF=0 alors, on va incrmenter les indexe SI et DI. Sinon on dcrmente. Les FLAG affects : CF OF AF SF ZF PF Exemple : STD ; mise 1 de DF MOV SI, offset TABSRC MOV DI, offset TABDEST CMPSB ; CMP ES : [DI], DS : [SI]. ; mise jour de registre dtat. ; SI SI-1. ; DI DI-1. Les Prfixes de Rptition des Instructions de Traitement de Chane a) le prfixe REP : Ce prfixe utilise le registre CX comme un compteur de rptition. Les instructions qui utilisent le prfixe REP sont : MOVS LODS STOS. Algorithme de fonctionnement : Si CX0 alors 1- on excute linstruction de traitement de chane. 2- CX CX - 1. 3- Rpt. Sinon Sort de la boucle de rptition. Fin si. Exemple : Transfert de 10 lments dun tableau source dans DS vers un tableau destination dans ES. CLD MOV CX, 10 MOV SI, offset TABSRC MOV DI, offset TABDEST REP MOVSB b) les prfixes REPE et REPZ :

- 40 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Rptition des instructions de comparaisons SCAS et CMPS tant que ZF=1 et CX0. Algorithme de fonctionnement : Si CX0 alors 1- On excute linstruction de traitement de chane. 2- CX CX-1. 3- Si ZF=1 alors Rpt. Sinon Sort de la boucle de rptition. Fin si Sinon Sort de la boucle de rptition. Fin si. Exemple : La recherche dun lment diffrent de caractre A dans un tableau de caractres. CLD MOV CX, TAILLETAB LEA DI, TAB MOV AL, A REPE SCASB CMP CX, 0 ; test de condition darrt, est ce que CX=0 ou ZF=0. JE NOT_FOUND ; saut si gal vers ltiquette nexiste pas. c) les prfixes REPNE et REPNZ : Rptition des instructions de comparaisons SCAS et CMPS tant que ZF=0 et CX0. Algorithme de fonctionnement : Si CX0 alors 1- On excute linstruction de traitement de chane. 2- CX CX-1. 3- Si ZF=0 alors Rpt. Sinon Sort de la boucle de rptition. Fin si Sinon Sort de la boucle de rptition. Fin si. Exemple : La recherche lun lment dans un tableau. CLD MOV DI, offset TAB MOV AL, B MOV CX, N REPNZ SCASB CMP CX, 0 ; test de condition darrt, est ce que CX=0 ou ZF=1. JE NOT_FOUND ; saut si gal vers ltiquette nexiste pas.

E) Instructions de saut et dappelle sous programme :

- 41 -

Programmation et Interfaage de p 8086 E.1) Instruction de saut : JA ou JNBE (1) Saut si suprieur JAE ou JNB (1) Saut si suprieur ou gal JB ou JNAE (1) Saut si infrieur JBE ou JNA (1) Saut si infrieur ou gal JC Saut en cas de retenue JE ou JZ Saut si gal ou nul JG ou JNLE (2) Saut si plus grand JGE ou JNL (2) Saut si plus grand ou gal JL ou JNGE (2) Saut si plus petit JLE ou JNG (2) Saut si plus petit ou gal JNC Saut si pas de retenue JNE ou JNZ Saut si non gal ou non nul JNO Saut si pas de dpassement JNP ou JPO Saut si parit impaire JNS Saut si signe positif JO Saut si dpassement JP ou JPE Saut si parit paire JS Saut si signe ngatif JMP Saut inconditionnel. (1) concerne des nombres non signs. (2) concerne des nombres signs.

Par : ATOUI HAMZA

(si CF + ZF = 0). (si CF = 0). (si CF = 1). (si CF + ZF = 1). (si CF = 1). (si ZF = 1). (si (SF OF) + ZF = 0). (si SF OF = 0). (si SF OF = 1). (si (SF OF) + ZF = 1). (si CF = 0). (si (ZF = 0). (si OF = 0). (si PF = 0). (si SF = 0). (si OF = 1). (si PF = 1). (si SF = 1).

E.2) Instructions dappelle sous programme : CALL RET 1) Instruction CALL : Cette instruction permet lappel dun sous programme que celui-ci dpende du mme segment ou non. Lors dun appel, le (IP) est stock en pile aprs stockage ventuel du contenu de (CS). Ladressage peut tre direct, relatif ou indirect. Appel intra segment : (IP : chang, CS : inchang). Exemple : CALL NEAR SUBROUTINE Appel inter segment : (IP : chang, CS : chang). Exemple : CALL FAR SUBROUTINE Appel intra segment indirect : (IP : chang, CS : inchang). Exemple : CALL WORD PTR [BX] ; par une case mmoire pointer par BX par rapport au DS. CALL BX ; par le contenu de registre BX. Appel inter segment indirect: (IP : chang, CS : chang). Exemple : CALL DWORD PTR [BX] IP case mmoire pointer par DS : [BX]. CS case mmoire pointer par DS : [BX+2].

- 42 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

2) Instruction RET : Cette instruction termine un sous-programme, mais il faut quelle corresponde lappel, dans ce sens quun appel long (inter segment) exige un retour long, et quun appel court (intra segment) exige un retour court. En effet, on peut, lissue dun retour, depuis la pile, soit un retour court. Il est possible de modifier le contenu de SP dune quantit donne. Ceci permet le passage de paramtres, laide de la pile, avant lappel dun sous-programme. Syntaxe : RET ; sans oprande RET valeur ; SP SP + valeur. Exemple : Ecrire une procdure qui fait lmission dune table de taille N vers un port : Mettez la taille de la table dans CX Mettez ladresse de la table dans SI Mettez ladresse du port dans DX La solution : Main : MOV CX, N MOV SI, offset TAB MOV DX, 0378h CALL NEAR SENDBUF End Main SENDBUF PROC NEAR PUSH CX PUSH SI PUSH DX PUSH AX CLD LODSB OUT DX, AL INC SI DEC CX CMP CX, 0 JNZ Encore POP AX POP DX POP SI POP CX RET ENDP

Encore:

SENDBUF

- 43 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Les boucles : 1) Instruction LOOP : Cette instruction dcrmente le contenu de CX et provoque un saut relatif court si ce dernier nest pas nul. Syntaxe : LOOP Etiquette ; Etiquette est une valeur sur 8 bits signe. Exemple : Lajout dune constante un tableau. MOV AL, 20h LEA SI, TAB MOV CX, N Encore : ADD BYTE PTR [SI], AL INC SI LOOP Encore 2) Instruction LOOPE ou LOOPZ : Cette instruction dcrmente le contenu de CX et provoque un saut relatif court si le flag ZF=1 et si CX 0 (ou sort de la boucle si ZF=0 ou CX=0). Syntaxe : LOOPE Etiquette ; Etiquette est une valeur sur 8 bits signe. Exemple : Programme de recherche de premier lment non nul dans un tableau. MOV CX, N MOV SI, offset TAB MOV AL, BYTE PTR [SI] INC SI CMP AL, 00h LOOPE Encore

Encore :

3) Instruction LOOPNE ou LOOPNZ : Cette instruction dcrmente le contenu de CX et provoque un saut relatif court si le flag ZF=0 et si CX 0 (ou sort de la boucle si ZF=1 ou CX=0). Syntaxe : LOOPNE Etiquette ; Etiquette est une valeur sur 8 bits signe. Exemple : Programme de recherche de premier lment nul dans un tableau. MOV CX, N MOV SI, offset TAB Encore : MOV AL, BYTE PTR [SI] INC SI CMP AL, 00h LOOPNZ Encore

- 44 -

Programmation et Interfaage de p 8086 F) Instructions des interruptions logicielles : INT INTO IRET

Par : ATOUI HAMZA

1) Instruction INT: Appel sous programme qui sappelle ISR (INTERRUPT SERVICE ROUTINE). Syntaxe : INT VEC ; VEC est un numro entre 0 et 255. Algorithme dexcution de INT : 1- Sauvegarde de registre FLAG dans la PILE. 2- Sauvegarde de registre CS dans la PILE. 3- Sauvegarde de registre IP dans la PILE. 4- IF = 0 5- Appel ISR Exemple : Affichage dun caractre dans lcran de DOS. MOV AH, 02h MOV DL, A INT 21h 2) Instruction INTO: Dclanche linterruption de vecteur numro 4 si OF=1. Syntaxe : INTO ; sans oprande. Algorithme : Si OF=1 alors INT 4. Exemple : MOV AL, -5 SUB Al, 127 INTO 3) Instruction IRET: Cette instruction termine un sous programme de traitement dune interruption. Les contenus de IP, CS et le registre FLAG sont rechargs depuis la pile. Le pointeur de pile est incrment de 6. Syntaxe : IRET ; sans oprande. Algorithme : 1- chargement de registre IP depuis la PILE. 2- chargement de registre CS depuis la PILE. 3- chargement de registre FLAG depuis la PILE. 4- IF = 1. 5- Retour programme principal. Exemple : Programmez un ISR qui calcul la somme dun tableau des octets. 1- Mettez la taille du tableau dans CX. 2- Mettez ladresse du tableau dans SI. 3- Le rsultat sera dans laccumulateur AX. Vecteur dinterruption est 40h.

- 45 -

Programmation et Interfaage de p 8086 La solution : ; Vectorisation PUSH DS MOV AX, CS MOV BX, ISR MOV DX, 0 MOV DS, DX MOV SI, 4*40h MOV WORD PTR [SI], BX MOV WORD PTR [SI+2], AX POP DS

Par : ATOUI HAMZA

; Programme principal MOV SI, offset TAB MOV CX, N INT 40h ; AX

la somme du TAB.

; Code source de lISR. ISR : PUSH CX PUSH SI PUSH BX MOVAX, 0 MOV BX, 0 Encore: MOV BL, BYTE PTR [SI] ADD AX, BX INC SI LOOP Encore POP BX POP SI POP CX IRET

- 46 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

G) Instructions de contrle du p : CLC STC CMC CLD STD CLI STI HLT WAIT LOCK NOP ESC 1) Instruction CLC : Effacer le carry FLAG. Syntaxe : CLC ; sans oprande CF 2) Instruction STC : Mettre le carry FLAG 1 . Syntaxe : STC ; sans oprande CF 3) Instruction CMC : Complmenter le carry FLAG. Syntaxe : CMC ; sans oprande CF

0.

1.

CF.

4) Instruction CLD : Effacer le FLAG de direction, dans ce cas les indexes (SI, DI) seront incrmenter aprs chaque instruction de traitement de chane. Syntaxe : CLD ; sans oprande DF 0. 5) Instruction STD : Mettre le FLAG de direction 1 , dans ce cas les indexes (SI, DI) seront dcrmenter aprs chaque instruction de traitement de chane. Syntaxe : STD ; sans oprande DF 1. 6) Instruction CLI : Effacer le FLAG dinterruption matrielle. Syntaxe : CLI ; sans oprande IF 0. Dsactiv . 7) Instruction STI : Mettre le FLAG dinterruption matrielle 1 . Syntaxe : STI ; sans oprande IF 1. Activ . 8) Instruction HLT : Suspendre l'excution et placer le 8086 dans le mode Sommeille jusqu une interruption matrielle arrive. Syntaxe : HLT ; sans oprande.

- 47 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

9) Instruction WAIT : Cette instruction met le p en attente jusqu la prsence dun signal sur la ligne TEST\ (passant de 5V 0V). Cet tat peut tre interrompu par une interruption externe, le retour a lieu dans ce cas, linstruction WAIT elle-mme. Elle sert synchroniser le p sur des circuits externes. Syntaxe : WAIT ; sans oprande. 10) Instruction LOCK : Cette instruction est utilise en MULTIPROCESSING pour viter les conflits, en particulier lors daccs mmoire. Il sagit dun prfixe. La sortie LOCK est mise zro pendant la dure de linstruction qui suit. 11) Instruction NOP : Pas dopration, perdre un cycle horloge. Syntaxe : NOP ; sans oprande. 12) Instruction ESC : Cette instruction permet dinclure dans un programme des ordres ne concernant pas le 8086 mais destin un autre processeur comme le 8087 ou NPX(NUMERIC PROCESSOR EXTENSION).

- 48 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

1) Description physique de p 8086 : Le microprocesseur Intel 8086 est un microprocesseur 16 bits, apparu en 1978. Cest le premier microprocesseur de la famille Intel 80x86 (8086, 80186, 80286, 80386, 80486, Pentium, ...). Il se prsente sous la forme dun botier DIP (Dual In Line Package) 40 broches :

- 49 -

Programmation et Interfaage de p 8086 2) Schma fonctionnel de 8086 :

Par : ATOUI HAMZA

- 50 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Description des lignes : Entre du signal dhorloge qui cadence le fonctionnement du CLK microprocesseur. Entre de remise zro du microprocesseur. RESET Entre de synchronisation avec la mmoire. READY Entre de synchronisation du microprocesseur dun vnement TEST\ extrieur. Entre de choix du mode de fonctionnement du MN/MX\ microprocesseur : MN : Mode minimum. MX : Mode maximum. Entre de demande dinterruption non masque. NMI Entre de demande dinterruption masque. INTR Sortie indique la rponse une demande dinterruption. INTA\ Signaux de laccs direct mmoire par le circuit DMA. HOLD et HLDA Signaux dtat du p en mode STEP BY STEP (pas pas). S0 S7 Signaux de bus dadresse de 20 bits (1Mo espace adressable). A0 A19 Signaux de bus de donnes de 16 bits. D0 D15 Signal de demande de lecture. RD\ Signal de demande dcriture. WR\ Signal de sparation daccs mmoire ou port : M/IO\ M/IO\ = 1 accs mmoire. M/IO\ = 0 accs port. Sortie indique que linformation qui circule dans bus AD est DEN une donne. Sortie indique le sens de transfert des donnes sur la bus de DT/R\ donnes : DT/R\ = 1 le bus de donne en sortie. DT/R\ = 0 le bus de donne en entre. Signal daccs de loctet du poids fort sur la bus (D8 / D15). BHE\ Sortie indique que linformation qui circule dans bus AD est ALE une adresse. Les Chronogrammes daccs : - Chronogramme de sparation de bus AD :

- 51 -

Programmation et Interfaage de p 8086 -

Par : ATOUI HAMZA

Chronogramme de sens de transfert de donnes sur la bus de donnes.

Remarque : le 8086 ne peut lire une donne sur 16 bits en une seule fois, uniquement si loctet de poids fort de cette donne est rang une adresse impaire et loctet de poids faible une adresse paire (alignement sur les adresses paires), sinon la lecture de cette donne doit se faire en deux oprations successives, do une augmentation du temps dexcution du transfert d un mauvais alignement des donnes.

- 52 -

Programmation et Interfaage de p 8086 3) Conception de bus systme de p 8086 :

Par : ATOUI HAMZA

Exemples de bascules D : circuits 8282, 74373, 74573.

- 53 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Exemples de tampons de bus : circuits transmetteurs bidirectionnels 8286 ou 74245.

A partir de cette tude de bus systme, on va interfacer le bloc mmoire et les priphriques dinterfaages qui vont tudier par la suite.

- 54 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

4) Interfaage mmoires : Une mmoire est un circuit semi-conducteur permettant denregistrer, de conserver et de restituer des informations (instructions et variables). Cest cette capacit de mmorisation qui explique la polyvalence des systmes numriques et leur adaptabilit de nombreuses situations. Les informations peuvent tre crites ou lues. Il y a criture lorsqu'on enregistre des informations en mmoire, lecture lorsqu'on rcupre des informations prcdemment enregistres. Organisation dune mmoire : Une mmoire peut tre reprsente comme une armoire de rangement constitue de diffrents tiroirs. Chaque tiroir reprsente alors une case mmoire qui peut contenir un seul lment : des donnes. Le nombre de cases mmoires pouvant tre trs lev, il est alors ncessaire de pouvoir les identifier par un numro. Ce numro est appel adresse. Chaque donne devient alors accessible grce son adresse. Avec une adresse de n bits il est possible de rfrencer au plus 2n cases mmoire. Chaque case est remplie par un mot de donnes (sa longueur m est toujours une puissance de 2). Le nombre de fils dadresses dun botier mmoire dfinit donc le nombre de cases mmoire que comprend le botier. Le nombre de fils de donnes dfinit la taille des donnes que lon peut sauvegarder dans chaque case mmoire. En plus du bus dadresses et du bus de donnes, un botier mmoire comprend une entre de commande qui permet de dfinir le type daction que lon effectue avec la mmoire (lecture/criture) et une entre de slection qui permet de mettre les entres/sorties du botier en haute impdance. On peut donc schmatiser un circuit mmoire par la figure suivante o lon peut distinguer :

Bus dadresse A0 An-1

Circuit Mmoire

Bus de donnes D0 Dp-1

RD\

CS\

WR\

Bus de contrle RD\ : signal de lecture case mmoire. WR\ : signal dcriture case mmoire. CS\ : signal de validation de circuit mmoire ou botier.

- 55 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Caractristiques dune mmoire : Capacit Cest le nombre total de bits. Elle sexprime aussi souvent en octet. Format de donnes Cest le nombre de bits que lon peut mmoriser par case mmoire. On dit aussi que cest la largeur du mot mmorisable. Temps daccs Cest le temps coul entre l'instant o a t lance une opration de lecture/criture en mmoire et l'instant o la premire information est disponible sur le bus de donnes. Temps de cycle Il reprsente l'intervalle minimum qui doit sparer deux demandes successives de lecture ou d'criture. Dbit Cest le nombre maximum d'informations lues ou crites par seconde. Volatilit Elle caractrise la permanence des informations dans la mmoire. L'information stocke est volatile si elle risque d'tre altre par un dfaut d'alimentation lectrique et non volatile dans le cas contraire. Diffrents types de mmoire : Mmoires vives (RAM) : Une mmoire vive sert au stockage temporaire de donnes. Elle doit avoir un temps de cycle trs court pour ne pas ralentir le microprocesseur. Les mmoires vives sont en gnral volatiles : elles perdent leurs informations en cas de coupure d'alimentation. Certaines d'entre elles, ayant une faible consommation, peuvent tre rendues non volatiles par l'adjonction d'une batterie. Il existe deux grandes familles de mmoires RAM (RANDOM ACCESS MEMORY : mmoire accs alatoire) : - Les RAM statiques. - Les RAM dynamique. 1- Les RAM statiques : le bit mmoire dune RAM statique (SRAM) est compos dune bascule, chaque bascule contient entre 4 et 6 transistors.

2- Les RAM dynamique : dans cette mmoire, linformation est mmorise sous la forme dune charge lectrique stocke dans un condensateur.

- 56 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Avantages : Cette technique permet une plus grande densit d'intgration, car un point mmoire ncessite environ quatre fois moins de transistors que dans une mmoire statique. Sa consommation sen retrouve donc aussi trs rduite. Inconvnients : La prsence de courants de fuite dans le condensateur contribue sa dcharge. Ainsi, linformation est perdue si on ne la rgnre pas priodiquement (charge du condensateur). Les RAM dynamiques doivent donc tre rafrachies rgulirement pour entretenir la mmorisation : il s'agit de lire l'information et de la recharger. Ce rafrachissement indispensable a plusieurs consquences : - Il complique la gestion des mmoires dynamiques car il faut tenir compte des actions de rafrachissement qui sont prioritaires. - La dure de ces actions augmente le temps d'accs aux informations. Dautre part, la lecture de linformation est destructive. En effet, elle se fait par dcharge de la capacit du point mmoire lorsque celle-ci est charge. Donc toute lecture doit tre suivie dune rcriture. Conclusions : En gnral les mmoires dynamiques, qui offrent une plus grande densit d'information et un cot par bit plus faible, sont utilises pour la mmoire centrale, alors que les mmoires statiques, plus rapides, sont utilises lorsque le facteur vitesse est critique, notamment pour des mmoires de petite taille comme les caches et les registres.

Mmoires Dynamiques

LA DRAM FPM (FAST PAGE MODE, 1987) LA DRAM EDO (EXTENDED DATA OUT, 1995)

La SYNCHRONOUS DRAM (SDRAM, 1997) LA DRAM BEDO (BURSTED EDO)

La DDR-I ou DDR-SDRAM (DOUBLE DATA RATE SYNCHRONOUS DRAM, 2000)

- 57 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Les mmoires mortes (ROM) : Pour certaines applications, il est ncessaire de pouvoir conserver des informations de faon permanente mme lorsque l'alimentation lectrique est interrompue. On utilise alors des mmoires mortes ou mmoires lecture seule (ROM : READ ONLY MEMORY). Ces mmoires sont non volatiles. Ces mmoires, contrairement aux RAM, ne peuvent tre que lue. Linscription en mmoire des donnes restent possible mais est appele programmation. Suivant le type de ROM, la mthode de programmation changera. Il existe donc plusieurs types de ROM :

Mmoires mortes
PROM ROM

EPROM

OTP

FPROM

UVPROM

EEPROM

FLASH EEPROM

Critres de choix dune mmoire : Les principaux critres retenir sont : - Capacit. - Vitesse. - Consommation. - Cot. Pyramide de vitesse et de capacit des lments de stockages dinformations :

- 58 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

- Les registres sont les lments de mmoire les plus rapides. Ils sont situs au niveau du processeur et servent au stockage des oprandes et des rsultats intermdiaires. - La mmoire cache est une mmoire rapide de faible capacit destine acclrer laccs la mmoire centrale en stockant les donnes les plus utilises. - La mmoire principale est lorgane principal de rangement des informations. Elle contient les programmes (instructions et donnes) et est plus lente que les deux mmoires prcdentes. - La mmoire dappui sert de mmoire intermdiaire entre la mmoire centrale et les mmoires de masse. Elle joue le mme rle que la mmoire cache. - La mmoire de masse est une mmoire priphrique de grande capacit utilise pour le stockage permanent ou la sauvegarde des informations. Elle utilise pour cela des supports magntiques (disque dur, ZIP) ou optiques (CDROM, DVDROM). Aprs cette longue dfinition des diffrents types de mmoires, on passe au cur du cours, cest linterface dun circuit mmoire au bus systme 8086. Avant de commencer, il faut dabord citer les diffrents lignes utilises pour interfacer un botier mmoire : - Les lignes dadresses A0 A19. - Les lignes de donnes D0 15. - Le signal BHE\. - Le signal M/IO\. - Le signal RD\. - Le signal WR\. A partir de la taille de bus dadresse de 20 bits, on distingue que lespace mmoire adressable par le p 8086 est de capacit 1 Mo = 220 * 8. Cet espace est divis en deux parties, partie paire de 512Ko et partie impaire de 512Ko. La partie paire est connecte au bus de donnes D0/D7, et la partie impaire est connecte au bus D8/D15.
Paire
0 2 4

Impaire
1 3 5

P+1

D0 / D7

D8 / D15

- 59 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Pour bien comprendre le fonctionnement de la ligne BHE\, on excute les codes sources suivants : MOV AL, (0002h)
Paire 0 2 4 Impaire 1 3 5

D0 / D7

AL

Dans ce cas BHE\ = 1 Avec A0 = 0 Et linstruction prend un cycle

MOV AL, (0003h)


Paire 0 2 4 Impaire 1 3 5

D8 / D15

AL

Dans ce cas BHE\ = 0 Avec A0 = 1 Et linstruction prend un cycle

- 60 -

Programmation et Interfaage de p 8086 MOV AX, (0004h)


Paire 0 2 4 Impaire 1 3 5

Par : ATOUI HAMZA

D0 / D7

D8 / D15

Dans ce cas BHE\ = 0 Avec A0 = 0 Et linstruction prend un cycle

AL

AH

A partir de ces exemples en constate le tableau daccs suivant :

BHE\ 0 0 1 1

A0 0 1 0 1

Accs 16 bits adresse paire 8 bits adresse impaire 8 bits adresse paire Illgale

Il reste laccs 16 bits adresse impaire, dans ce cas, on prend lexemple : MOV AX, (0001h) Par analogie AL sera charg par le contenu de ladresse (0001h) et AH par le contenu de ladresse (0002h), mais on remarque que ADR (0001h) est une adresse impaire on prend un cycle pour charger AL, et un autre cycle pour charger AH. AL (0001h) : A0 = 1 et BHE\ = 0. (1 cycle). AH (0002h) :A0 = 0 et BHE\ = 1. (1 cycle). On tous deux cycles. On passe maintenant aprs cette description de la ligne BHE\ la liaison dun bloc mmoire de taille 1Ko ladresse physique (00000h) laide les botiers de RAM de taille 256*8. Avant dinterfacer ce bloc, on va suivre les tapes suivantes : 1- Calculez le nombre de botiers utiliss pour raliser le bloc mmoire demand. Nombre de botiers =

1 * 1024 * 8 = 4. 256 * 8

- 61 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

2- Calculez le nombre de lignes dadresse du bloc demand et de botier utilis. Nombre de lignes dadresse demand =
lg(1 *1024) = 10 lignes. lg(2) lg(256) Nombre de lignes dadresse utilis = = 8 lignes. lg(2)

3- Ftes le mapping suivant :

A A A A A A A A A A A A A A A A A A A A 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Bus dadresse Utilis Bus dadresse Demand 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

CS global avec M/IO\ = 1.

Adresse initiale (De base) Adresse finale

Comment calculer ladresse finale : tous simplement par la relation suivante : Adresse finale = adresse initiale + (valeur max sur le nombre de lignes dadresse de bloc demand). Dans notre exemple : Adresse finale = 00000h + (valeur max sur 10 lignes = 3FFh). Adresse finale = 003FFh. On remarque que les lignes dadresse A10 A19 et M/IO\ = 1 prend la mme valeur pour nimporte quelle adresse de lespace demand de 1 Ko dans ladresse de base spcifie cest le CS (CHIP SELECT) global de cette zone. Et en plus la ligne dadresse A0 est non utilise dans les lignes dadresse utilise par ce que cette dernire est utilise avec la ligne BHE\ pour la sparation paire et impaire du bloc demand de 1 Ko. Il reste la ligne A9, cette ligne on utilise pour la sparation de lespace mmoire demande LOW (A9 = 0), et de lespace mmoire demande HIGH (A9 = 1). On distingue dans ce cas que lespace demand est divis en quatre cadrans sont : - Cadran LOW paire. - Cadran LOW impaire. - Cadran HIGH paire. - Cadran HIGH impaire.

- 62 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Paire

Impaire

CS0\

CS1\

A1

A0

A1

A0

LOW

A8

A7

A8

A7

Cadran LOW paire

Cadran LOW impaire

CS2\

CS3\

A1

A0

A1

A0

HIGH

A8

A7

A8

A7

Cadran HIGH paire

Cadran HIGH impaire

D0 / D7

D8 / D15

- 63 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Maintenant on ralise la logique de chaque CSi\ par le circuit dcodeur suivant : LOW A0 PAIRE Partie de sparation LOW et HIGH
A9

74138

Y0\ A B C Y1\ Y2\ Y3\ Y4\ Y5\ Y6\


Y7\

CS0\

CS1\

CS2\

M/IO\
A B

G G1B\ G2B\

CS3\

La partie CS global

BHE\ IMPAIRE HIGH

A10 A11 A12 A13 A14

A15 A16 A17 A18 A19

- 64 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

5) Les Interfaces parallles : Linterface parallle est une carte lectronique I/O qui fait lchange de donne entre le p et un priphrique en parallle selon la taille de bus de donnes (8 ou 16 bits). Les points daccs aux I/O sont appels PORTS. Gestion des ports : Le p 8086 fournes un espace adressable pour laccs ports de taille 64Ko 16 lignes dadresse et 16 lignes de donnes plus quelque lignes de contrles. Mais on remarque que la mmoire et les ports I/O partage le mme bus de donnes et dadresse, alors comment diffrencier laccs entre eux. Tous simplement si on rappel le cours de linterfaage mmoires dans la partie CHIP SELECT de dcodeur 74138 lentre G , cette entre est attaque par le signal M/IO\ de bus de contrle. - Pour laccs mmoire : M/IO\ = 1. - Pour laccs ports : M/IO\ = 0. Les instructions utilises pour R/W dun port sont IN/OUT . Il existe deux types daccs, accs direct et un autre indirect. Les registres utiliss sont laccumulateur AL/AX et le registre de donnes DX . On peut citer dans ce stade les 2 interfaces parallles standard PORT PARALLELE et COUPLEUR PARALLELE PPI 8255. Le port parallle : Cette interface est gnralement utilise par les imprimantes, car elles utilisent beaucoup de donns. Cependant cette interface une limite physique li aux problmes de diaphonie entre les fils, ce qui pour principale consquence de limiter la longueur des cbles parallles. Au del de 10 m on commence avoir une attnuation significative du signal. Ceci dit il existe des amplificateurs de signal qui prennent gnralement la forme de botier de partage auto commut. Description physique: Le port parallle des PC se prsente sous la forme d'une prise DB25 femelle.

13 25 12 24 11 23 10 22 9 21 8 20 7 19 6 18 5 17 4 16 3 15 2 14 1

- 65 -

Programmation et Interfaage de p 8086 Description du brochage du connecteur DB25 F :


Broche Description

Par : ATOUI HAMZA

E/S

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

-STROBE +Bit de donnes 0 +Bit de donnes 1 +Bit de donnes 2 +Bit de donnes 3 +Bit de donnes 4 +Bit de donnes 5 +Bit de donnes 6 +Bit de donnes 7 -Accus de rception +Occup +Plus de papier +Slection -Chargement automatique -Erreur -Initialisation de l'imprimante -Slection de l'entre

Sortie Sortie Sortie Sortie Sortie Sortie Sortie Sortie Sortie Entre Entre Entre Entre Sortie Entre Sortie Sortie

-Retour du bit de donnes 0 (masse) Entre -Retour du bit de donnes1 (masse) Entre -Retour du bit de donnes 2 (masse) Entre -Retour du bit de donnes 3 (masse) Entre -Retour du bit de donnes 4 (masse) Entre -Retour du bit de donnes 5 (masse) Entre -Retour du bit de donnes 5 (masse) Entre -Retour du bit de donnes 7 (masse) Entre

- 66 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Description des ports : Il dispose 3 ports pour la communication avec limprimante, ces ports sont le port DATA pour la transmission des caractres, le port STATUS pour indiquer ltat de limprimante, le port CONTROL pour contrler lchange de donnes.
Port DATA : est un port de donnes de taille 8 bits configur en sortie dans la version standard.

P9
D7

P8
D6

P7
D5

P6
D4

P5
D3

P4
D2

P3
D1

P2
D0

Port STATUS : est un port de 5 bits configur en entre.

P11
S7\

P10
S6

P12
S5

P13
S4

P15
S3

Port CONTROL : est un port de 4 bits configur en sortie.

P17
C3\

P16
C2

P14
C1\

P1
C0\

Les adresses des ports parallles implants dans les PC compatible PC IBM : Numro de LPT LPT1 LPT2 LPT3 Port DATA 0378H 0278H 03BCH Port STATUS 0379H 0279H 03BDH Port CONTROL 037AH 027AH 03BEH

Exemple daccs : Lecture du port STATUS : On remarque que ladresse du port est une adresse sur 16 bits indirect par lutilisation de registre DX. MOV DX, 0379h IN AL, DX

le mode daccs

Ecriture dans le port DATA ou CONTROL: MOV AL, 55h MOV DX, 0378h ; dans le cas de registre de control on mettre 037Ah OUT DX, AL

- 67 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Le coupleur parallle PPI 8255: Le rle dune interface parallle est de transfrer des donnes du p vers un priphrique et linverse en parallle. Le 8255 est une interface parallle programmable, elle peut tre configure en entre et/ou en sortie par programme.

Brochage du 8255 :

- 68 -

Programmation et Interfaage de p 8086 Schma fonctionnel :

Par : ATOUI HAMZA

Description des PINs et laccs registres : SYMBOL VCC GND D0-D7 RESET CS\ RD\ WR\ A0-A1 PA0-PA7 PB0-PB7 PC0-PC7 PIN 26 7 27-34 35 6 5 36 8,9 1-4,37-40 18-25 10-17 TYPE I/O I I I I I I/O I/O I/O Description Pin dalimentation 5v Masse Bus de donnes 8 bits bidirectionnels Entre de demande dinitialisation botier Entre dactivation botier Entre de demande de lecture registre Entre de demande dcriture registre Lignes dadresse des registres Pins du port A Pins du port B Pins du port C

Accs registres : A1 A0 RD\ 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 1 1 1 0 1 1 1 1 X X X X X 1

WR\ 1 1 1 1 0 0 0 0 X 1

CS\ 0 0 0 0 0 0 0 0 1 0

Opration PORTA DATA BUS PORTB DATA BUS PORTC DATA BUS CR DATA BUS DATA BUS PORTA DATA BUS PORTB DATA BUS PORTC DATA BUS CR DATA BUS Haute impdance DATA BUS Haute impdance

- 69 -

Programmation et Interfaage de p 8086 Structure de registre CR : Bit de mode de Fonctionnement. 1= mode registre 0 = mode BSR D7 D6 D5 D4 D3 D2 D1

Par : ATOUI HAMZA

D0

Groupe A Slection de mode : 00 = mode 0. 01 = mode 1. 1x = mode 2. Sens du PORTA 1 = En entre 0 = En sortie Sens du PORTC H 1 = En entre 0 = En sortie Exemple : Faites la configuration suivante : - PORTA en mode 1 en sortie. - PORTB en mode 0 en entre. - PORTC en sortie. Solution : 1 0 1 0 A

Groupe B Sens du PORTC L 1 = En entre 0 = En sortie

Sens du PORTB 1 = En entre 0 = En sortie Slection de mode : 0 = mode 0. 1 = mode 1.

0 2

MOV AL, 0A2h MOV DX, ADR_CR OUT DX, AL

; la valeur de CR qui assure la configuration. ; ladresse de registre CR dans le registre DX. ; crire dans le registre CR.

- 70 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Fonctionnement du PPI 8255 : Le PPI 8255 fonctionne en 4 modes (mode0, mode1, mode2, mode BSR). Ces modes sont activs par la programmation de registre CR.
Mode BSR (BIT SET RESET): Ce mode utilise par le PORTC uniquement qui peuvent tre mise 1 ou 0 dune ligne du PORTC individuellement. Dans ce mode la structure de registre CR est modifi mais cette modification ne drange pas le mode de fonctionnement des ports (A et B). Remarque : noublie pas de configurer le PORTC en sortie dans le registre CR.

Structure de registre CR en mode BSR : 0 X X X B2 B1 B0 S/R

Il faut mettre ce bit 0 pour activer le mode BSR. Bit RET RESET 1 SET RESET 0

Bits non Utiliss

Slection dun Bit du PORTC 000 BIT0. 001 BIT1. 010 BIT2. 011 BIT3. 100 BIT4. 101 BIT5. 110 BIT6. 111 BIT7.

Exemple : Mettez la PIN6 du PORTC 1 et la PIN3 0 . Configuration de PORTC en sortie CR B10000000 Pour mettre la PIN6 1 le CR B00001101 Pour mettre la PIN6 1 le CR B00000110 ; Configuration des registres et PORTC en sortie. MOV DX, ADR_CR MOV AL, 80h OUT DX, AL ; PIN6 1 MOV AL, 0Dh OUT DX, AL ; PIN3 0 MOV AL, 06h OUT DX, AL = 80h. = 0Dh. = 06h.

- 71 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Mode 0: Cest le mode le plus simple : les ports sont configur en entres/sorties de base. Les donnes crites dans les registres correspondants sont mmorises sur les lignes de sorties ; ltat des entres est recopi dans les registres correspondants et nest pas mmoris (buffrises). Chronogramme daccs :

Diffrentes mots de configuration en mode 0 : Valeur CR 80h 82h 81h 83h 88h 90h 89h 91h 8Ah 92h 8Bh 98h 99h 93h 9Ah 9Bh Description A: OUT; B: OUT; CL: OUT; CH: OUT. A: OUT; B: IN; CL: OUT; CH: OUT. A: OUT; B: OUT; CL: IN; CH: OUT. A: OUT; B: OUT; CL: IN; CH: IN. A: OUT; B: IN; CL: OUT; CH: OUT. A: IN; B: OUT; CL: OUT; CH: OUT. A: OUT; B: IN; CL: IN; CH: OUT. A: IN; B: OUT; CL: IN; CH: OUT. A: OUT; B: IN; CL: OUT; CH: IN. A: IN; B: OUT; CL: OUT; CH: IN. A: OUT; B: IN; CL: IN; CH: IN. A: IN; B: IN; CL: OUT; CH: OUT. A: IN; B: IN; CL: IN; CH: OUT. A: IN; B: OUT; CL: IN; CH: IN. A: IN; B: IN; CL: OUT; CH: OUT. A: IN; B: IN; CL: IN; CH: IN.

- 72 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Mode 1: Il est utilis pour le dialogue avec des priphriques ncessitant un asservissement (contrle), dans ce mode les registres de 8255 sont regroups en deux groupes (GROUPE A et GROUPE B) chaque groupe dispose le port du groupe plus quelque lignes du PORTC comme signaux du contrle.

Mode 1 en entre :

On remarque que le PORTC devient seulement les PINs PC6 et PC7 le reste des PINs serons des PINs du contrle de groupe A et B. Description des signaux du contrle : STB\ (STROBE) : ce signal active au niveau bas dlivrer par le priphrique qui indique que la donne est prsente dans le BUFFER dentre (PORTA ou PORTB). IBF (INPUT BUFFER FULL) : ce signal active au niveau haut pour indique au priphrique la bonne rception de la donne. INTR (INTERRUPT REQUEST) : ligne active au niveau haut lorsque STB\ et INB sont aux niveau haut. INTE (INTERUPT ENABLE) : cest un bit utilis pour autoriser le mode de fonctionnement sous interruption. Le PORTC est appel le mot dtat de groupe A et B : I/O I/O IBF A INTE A INTR A INTE B

IBF B

INTR B

Noublie pas que les ports (A et B) sont des mmoires en entre dans ce mode.

- 73 -

Programmation et Interfaage de p 8086 Chronogramme daccs :

Par : ATOUI HAMZA

Mode 1 en sortie :

Dans ce cas la le PORTC devient les PINs PC5 et PC4.

- 74 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

Description des signaux du contrle : OBF\ (OUTPUT BUFFER FULL) : ce signal passe au niveau bas si le p crire une donne dans le BUFFER de sortie, ce signal aussi indique au priphrique que il y a une donne dans le BUFFER (les lignes du port A ou B). ACK\ (ACKNOWLEDGE INPUT) : ce signal dlivr par le priphrique pour indiquer la bonne rception de la donne sous forme impulsion ngative. INTR et INTE sont les mmes signaux du mode 1 en entre. Le mot dtat du mode 1 en sortie: OBF\ A INTE A I/O I/O Chronogramme daccs :

INTR A

INTE B

OBF\ B

INTR B

Mode 2 : Dans ce mode est utilis seulement par le PORTA et peut tre considrer comme un bus bidirectionnelle. Le groupe A sera donc le PORTA plus 5 lignes du PORTC, et le groupe B si on configure en mode 1 le PORTC est disparu par ce que le mode 1 extraire 3 lignes de ce dernier, mais dans le cas mode 0 le PORTC est de 3 lignes.

Les signaux du contrle sont les mmes que les signaux du mode 1 en I/O.

- 75 -

Programmation et Interfaage de p 8086 Chronogramme daccs :

Par : ATOUI HAMZA

Diffrentes combinaisons en mode 2 :

- 76 -

Programmation et Interfaage de p 8086 Les mots dtat pour chaque combinaison : MODE 2 AND MODE 0 (INPUT) : OBF\ A INTE 1 IBF A INTE 2 INTR A
MODE 2 AND MODE 0 (OUTPUT) : OBF\ A INTE 1 IBF A INTE 2 MODE 2 AND MODE 1 (INPUT) : OBF\ A INTE 1 IBF A INTE 2 MODE 2 AND MODE 1 (OUTPUT) : OBF\ A INTE 1 IBF A INTE 2

Par : ATOUI HAMZA

I/O

I/O

I/O

INTR A

I/O

I/O

I/O

INTR A

INTE B

IBF B

INTR B

INTR A

INTE B

OBF\ B

INTR B

Applications :

KEYBOARD AND TERMINAL ADDRESS INTERFACE

KEYBOARD AND TERMINAL ADDRESS INTERFACE

- 77 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

BASIC CRT CONTROLLER INTERFACE

DIGITAL TO ANALOG, ANALOG TO DIGITAL

- 78 -

Programmation et Interfaage de p 8086

Par : ATOUI HAMZA

BASIC FLOPPY DISC INTERFACE

MACHINE TOOL CONTROLLER INTERFACE

- 79 -