Cours 2011 2012 ME17 Informatique Industrielle1 Master

Embed Size (px)

DESCRIPTION

cour pour les pic et MP 8086PIC assembly MP8086 AssemblyPIC MecroProssesor 8086

Citation preview

  • Ministre de lenseignement suprieur et de la recherche scientifique Universit MENTOURI Constantine

    Dpartement dlectrotechnique

    Module : Informatique Industrielle 1 Code : ME17

    Niveau : Master en lectrotechnique Mthode denseignement : Cours/ TD / TP

    Objectifs de la formation :

    Contenu du module propos par ladministration : Architecture, Microprocesseur usage gnrale, processeurs de traitement

    numrique du signal DSP.

    Programmation, exemple de proc.

    Les chapitres proposs par le responsable de module :

    Chapitre 1 : Historique et volution des ordinateurs et des microprocesseurs

    Chapitre 2 : Le microprocesseur Intel 8086

    Chapitre 3 : La programmation en assembleur du 8086

    Chapitre 4 : Les interfaces dentres/sorties Chapitre 5 : Les interruptions dans 8086

    Chapitre 6 : Le Microcontrleur PIC16F84

    Chapitre 6 : Les processeurs de traitement numrique du signal DSP.

    Annexe : Jeu dinstructions du 8086

    Responsable de module : Mr MESSAOUDI Kamel Matre assistant A UMC

    Ce document constitue le support du cours et ne prtend donc ni l'originalit, ni l'exhaustivit. Ces notes

    doivent beaucoup aux emprunts faits de nombreux ouvrages et diffrents travaux de collgues. Ce

    document s'adresse aux tudiants Master1 (Master en lectrotechnique), dpartement dlectrotechnique, universit Mentouri de Constantine.

    Anne Universitaire 2011-2012

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 1

    Chapitre I : Historique et volution des ordinateurs et des microprocesseurs

    I. Prface :

    Apparus ds la cration des premiers circuits intgrs numriques, au dbut des annes

    1970, les microprocesseurs constituent le coeur de presque toutes les ralisations lectroniques; on

    en trouve dans tous les domaines, notamment : l'informatique (de la calculatrice l'ordinateur),

    l'automobile (ABS, injection, ...), l'automatique (automates programmables, contrle de processus,

    ...), l'lectronique domestique (thermomtre, tlcommande, carte puce, ...).

    Les performances des microprocesseurs sont lies aux possibilits offertes par la

    technologie, en terme de capacit (nombre de portes logiques intgres) et de vitesse, et au choix

    d'architectures adaptes (ou imposes pour cause de compatibilit ascendante); l'heure actuelle, on

    trouve sur le march des microprocesseurs intgrant des millions de transistors, fonctionnant plus

    de 3000 MHz et disposs dans des botiers de plusieurs centaines de broches, ils sont issus de

    diffrentes approches architecturales : CISC, RISC, DSP et VLIW.

    L'objectif de ce chapitre est de retracer l'volution des microprocesseurs, en liaison avec

    celle de la technologie.

    II. Prhistoire des ordinateurs :

    Les premires machines calculer taient purement mcaniques : bouliers, abaques, ...

    (antiquit). La premire vraie machine calculer est apparue en 1942 : (Pascal, machine

    additionner). Une autre machine multiplier propose par Leibniz en 1694, base sur les travaux de

    John Neper (1617, logarithmes). Vers les 18eme sicle, une autre machine programmable base

    des cartes perfores est apparue (mtier tisser, Jacquard).

    II.1. Machines lectromcaniques :

    Machine calculer cartes perfores : Hermann Hollerith, 1885, facilite le recensement amricain.

    Machines industrielles pour la comptabilit et les statistiques. Ces machines sont base de relais lectromcaniques (Aiken et Stibitz, 1936-1939).

    II.2. Machines lectroniques :

    Premire machine calculer lectronique : ENIAC, 1944, Eckert et Mauchly, 18000 tubes lectroniques, machine programme cbl.

    Machine programme enregistr : John Von Neumann, 1946, les instructions sont enregistres dans la mmoire du calculateur : ordinateur.

    Premier ordinateur commercialis : SSEC dIBM, 1948. Ordinateur transistors : 1963, PDP5 de Digital Equipment Corporation (DEC),

    introduction des mmoires ferrites : mini-ordinateurs.

    Micro-ordinateurs : 1969-70, utilisation des circuits intgrs LSI. Premier microprocesseur : Intel, 1971, microprocesseur 4004, puis 8008, premier

    microordinateur : le Micral, 1973, France, puis lAltair, 1975, Etats-Unis. Autres microprocesseurs : 8080 et 8085 dIntel, 6800 de Motorola, Z80 de Zilog :

    microprocesseurs 8 bits, dbut des annes 1980.

    Microprocesseurs 16 bits : 8086/8088 dIntel, 68000 de Motorola. Microprocesseurs 32 bits en 1986 : 80386 dIntel et 68020 de Motorola. Fabrication en grandes sries des micro-ordinateurs : 1977, Apple, Commodore, Tandy. IBM PC + MS-DOS (Microsoft) en 1981.

    II.3. Machines actuelles :

    Les ordinateurs de nos jours sont de plus en plus puissants, bass sur des microprocesseurs

    performants : Pentium, Power PC, ... ; Avec des nouvelles architectures de microprocesseurs :

    RISC. Et avec des applications multimdia, rseaux, ....

    De nos jours, est apparue aussi la notion des systmes embarqus : microcontrleurs,

    processeurs de traitement de signal (DSP), les microprocesseurs configurables ...

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 2

    III. Architecture et fonctionnement dun microprocesseur : III.1 Structure dun calculateur :

    Figure n1 : Structure dun calculateur

    Llment de base dun calculateur est constitu par lunit centrale de traitement (UCT, CPU: Central Processing Unit). LUCT est constitue :

    Dune unit arithmtique et logique (UAL, ALU : Arithmetic and Logic Unit) : cest lorgane de calcul du calculateur ;

    De registres : zones de stockage des donnes de travail de lUAL (oprandes, rsultats intermdiaires) ;

    Dune unit de contrle (UC, CU : Control Unit) : elle envoie les ordres (ou commandes) tous les autres lments du calculateur afin dexcuter un programme.

    La mmoire centrale contient : Le programme excuter : suite dinstructions lmentaires ; Les donnes traiter.

    Lunit dentres/sorties (E/S) est un intermdiaire entre le calculateur et le monde extrieur. Lunit de transfert est le support matriel de la circulation des donnes. Les changes dordres et de donnes dans le calculateur sont synchroniss par une horloge qui

    dlivre des impulsions (signal dhorloge) des intervalles de temps fixes. Dfinition : Un microprocesseur consiste en une unit centrale de traitement (UAL + registres +

    unit de contrle) entirement contenue dans un seul circuit intgr. Un calculateur construit

    autour dun microprocesseur est un microcalculateur ou un microordinateur. Un circuit intgr qui inclut une UCT, de la mmoire et des priphriques est un microcontrleur.

    III.2 Organisation de la mmoire centrale :

    La mmoire peut tre vue comme un ensemble de cellules ou cases contenant chacune une

    information : une instruction ou une donne. Chaque case mmoire est repre par un numro

    dordre unique : son adresse. Une case mmoire peut tre lue ou crite par le microprocesseur (cas des mmoires vives) ou bien seulement lue (cas des mmoires mortes). La figure suivante montre

    le schma synoptique dune mmoire :

    Figure n2 : Organisation de la mmoire centrale

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 3

    III.3 Circulation de linformation dans un calculateur La ralisation matrielle des ordinateurs est gnralement base sur larchitecture de

    VonNeumann :

    Figure n3 : Architecture de base de VonNeumann de transfert des donnes

    Le microprocesseur change des informations avec la mmoire et lunit dE/S, sous forme de mots binaires, au moyen dun ensemble de connexions appel bus. Un bus permet de transfrer des donnes sous forme parallle, cest--dire en faisant circuler n bits simultanment.

    Les microprocesseurs peuvent tre classs selon la longueur maximale des mots binaires

    quils peuvent changer avec la mmoire et les E/S : microprocesseurs 8 bits, 16 bits, 32 bits, ... Le bus peut tre dcompos en trois bus distincts :

    Le bus dadresses permet au microprocesseur de spcifier ladresse de la case mmoire lire ou crire ;

    Le bus de donnes permet les transferts entre le microprocesseur et la mmoire ou les E/S ; Le bus de commande transmet les ordres de lecture et dcriture de la mmoire et des E/S.

    Figure n4 : Architecture dtall de VonNeumann de transfert des donnes.

    Remarque : Les bus de donnes et de commande sont bidirectionnels, le bus dadresse est unidirectionnel : seul le microprocesseur peut dlivrer des adresses (il existe une drogation pour

    les circuits daccs direct la mmoire, DMA). III.4. Description matrielle dun microprocesseur :

    Un microprocesseur se prsente sous la forme dun circuit intgr muni dun nombre gnralement important de broches. Exemples :

    Intel 8085, 8086, Zilog Z80 : 40 broches, DIP (Dual In-line Package) ; Motorola 68000 : 64 broches, DIP ; Intel 80386 : 196 broches, PGA (Pin Grid Array).

    La technologie de fabrication : NMOS, PMOS, CMOS. On peut reprsenter donc un

    microprocesseur par son schma fonctionnel :

    Figure n5 : Schma fonctionnel

    dun microprocesseur

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 4

    III.5 Fonctionnement dun microprocesseur : Un microprocesseur excute un programme. Le programme est une suite dinstructions

    stockes dans la mmoire. Une instruction peut tre code sur un ou plusieurs octets. Le format

    dune instruction est donnes par :

    Figure n6 : Format et arrangement dune instruction excute par un microprocesseur.

    Pour excuter les instructions dans lordre tabli par le programme, le microprocesseur doit savoir chaque instant ladresse de la prochaine instruction excuter. Le microprocesseur utilise un registre contenant cette information. Ce registre est appel pointeur dinstruction (IP : Instruction Pointer) ou compteur dinstructions ou compteur ordinal. La figure suivante illustre un exemple dIP :

    Figure n7 : Exemple dun pointeur dinstruction IP.

    Remarque n1 :

    La valeur initiale du pointeur dinstruction est fixe par le constructeur du microprocesseur. Elle vaut une valeur bien dfinie chaque mise sous tension du microprocesseur ou bien lors dune remise zro (reset).

    Pour savoir quel type dopration doit tre excut (addition, soustraction, ...), le microprocesseur lit le premier octet de linstruction pointe par le pointeur dinstruction (code opratoire) et le range dans un registre appel registre dinstruction. Le code opratoire est dcod par des circuits de dcodage contenus dans le microprocesseur. Des signaux de commande pour

    lUAL sont produits en fonction de lopration demande qui est alors excute.

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 5

    Remarque n2 : Pour excuter une instruction, lUAL utilise des registres de travail, exemple : laccumulateur, registre temporaire recevant des donnes intermdiaires. Pendant que linstruction est dcode, le pointeur dinstruction est incrment de faon pointer vers linstruction suivante :

    Figure n8 : Incrmentation du pointeur dinstruction.

    Ensuite le processus de lecture et de dcodage des instructions recommence. A la suite de

    chaque instruction, un registre du microprocesseur est actualis en fonction du dernier rsultat :

    cest le registre dtat du microprocesseur. Chacun des bits du registre dtat est un indicateur dtat ou flag (drapeau). Exemple : Registre dtat du microprocesseur Z80 :

    Figure n9 : Registre dtat du microprocesseur Z80.

    Les indicateurs dtat sont activs lorsquune certaine condition est remplie, exemple : le flag Z est mis 1 lorsque la dernire opration a donn un rsultat nul, le flag C est mis un lorsque

    le rsultat dune addition possde une retenue, ... Les indicateurs dtat sont utiliss par les instructions de saut conditionnels : en fonction de

    ltat dun (ou plusieurs) flags, le programme se poursuit de manire diffrente. Toutes ces tapes (lecture de linstruction, dcodage, excution) sont synchronises par un

    squenceur qui assure le bon droulement des oprations :

    Figure n10 : Synchronisation des tapes dexcution dune instruction.

    Pour excuter le programme contenu dans la mmoire centrale, le squenceur du

    microprocesseur excute lui-mme un programme appel micro-code, contenu dans une mmoire

    morte lintrieur du microprocesseur. Le squenceur est dirig par une horloge qui dlivre un signal de frquence donne

    permettant denchaner les diffrentes tapes de lexcution dune instruction :

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 6

    Figure n11 : Le signal Horloge et le cycle dinstruction.

    Chaque instruction est caractrise par le nombre de priodes dhorloge (ou microcycles) quelle utilise (donne fournie par le fabricant du microprocesseur). Exemple : horloge 5 MHz, priode T = 1/f = 0, 2 s. Si linstruction sexcute en 3 microcycles, la dure dexcution de linstruction est : 3 0,2 = 0, 6 s. Lhorloge est constitue par un oscillateur quartz dont les circuits peuvent tre internes ou externes au microprocesseur.

    La figure suivante montre la structure complte dun microprocesseur simple : pour fonctionner, un microprocesseur ncessite donc au minimum les lments suivants :

    Figure n12 : Structure complte dun microprocesseur.

    IV. Les mmoires et les microprocesseurs :

    IV.1. Mmoires ROM et RAM :

    On distingue deux types de mmoires :

    Les mmoires vives (RAM : Random Access Memory) ou mmoires volatiles. Elles perdent leur contenu en cas de coupure dalimentation. Elles sont utilises pour stocker temporairement des donnes et des programmes. Elles peuvent tre lues et crites par le

    microprocesseur ;

    Les mmoires mortes (ROM : Read Only Memory) ou mmoires non volatiles. Elles conservent leur contenu en cas de coupure dalimentation. Elles ne peuvent tre que lues par le microprocesseur (pas de possibilit dcriture). On les utilise pour stocker des donnes et des programmes de manire dfinitive.

    Les mmoires sont caractrises par leur capacit : nombre total de cases mmoire

    contenues dans un mme botier.

    IV.2. Schma fonctionnel dune mmoire :

    Figure n13 : Schma fonctionnel dune mmoire.

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 7

    Le nombre de lignes dadresses dpend de la capacit de la mmoire : n lignes dadresses permettent dadresser 2n cases mmoire : 8 bits dadresses permettent dadresser 256 octets, 16 bits dadresses permettent dadresser 65536 octets (= 64 Ko), ...etc. Exemple : mmoire RAM 6264, capacit = 8K8 bits : 13 broches dadresses A0 `a A12, 213 = 8192 = 8 Ko. IV.3. Interfaage microprocesseur/mmoire :

    Figure n14 : Interfaage microprocesseur/mmoire.

    Reprsentation condense (plus pratique) :

    Figure n15 : Reprsentation condense de linterfaage microprocesseur/mmoire.

    IV.4. Chronogrammes de lecture/criture en mmoire :

    Une caractristique importante des mmoires est leur temps daccs : cest le temps qui scoule entre linstant o ladresse de la case mmoire est prsente sur le bus dadresses et celui o la mmoire place la donne demande sur le bus de donnes. Ce temps varie entre 50ns

    (mmoires rapides) et 300ns (mmoires lentes).

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 8

    Figure n16 : Chronogrammes de lecture/criture en mmoire.

    IV.5. Classification des mmoires

    Jusqu la fin des annes 1970, on utilisait des mmoires tores magntiques, lentes et de faibles capacits. Actuellement, on nutilise plus que des mmoires semi-conducteurs.

    Mmoires mortes :

    ROM : Read Only Memory. Mmoire lecture seule, sans criture. Son contenu est programm une fois pour toutes par le constructeur. Avantage : faible cot. Inconvnient :

    ncessite une production en trs grande quantit.

    PROM: Programmable Read Only Memory. ROM programmable une seule fois par lutilisateur (ROM OTP : One Time Programming) en faisant sauter des fusibles. Ncessite un programmateur spcialis : application dune tension de programmation (21 ou 25 V) pendant 20 ms.

    EPROM : Erasable PROM, appele aussi UVPROM. ROM programmable lectriquement avec un programmateur et effaable par exposition un rayonnement ultraviolet pendant 30

    minutes. Famille 27nnn, exemple : 2764 (8 Ko), 27256 (32 Ko). Avantage : reprogrammable

    par lutilisateur. EEPROM : Electrically Erasable PROM. ROM programmable et effaable lectriquement.

    Lecture vitesse normale ( 100 ns). Ecriture (= effacement) trs lente ( 10 ms). Application : les EEPROM contiennent des donnes qui peuvent tre modifies de temps en

    temps, exemple : paramtres de configuration des ordinateurs. Avantage : programmation

    sans extraction de la carte et sans programmateur. Inconvnient : cot lev.

    Mmoires vives :

    SRAM : Static Random Access Memory. Mmoire statique accs alatoire, base de bascules semi-conducteurs deux tats (bascules RS). Famille 62nnn, exemple : 62128

    (16 Ko). Avantage : trs rapide, simple dutilisation. Inconvnient : compliqu raliser. DRAM : Dynamic RAM. Base sur la charge de condensateurs : condensateur charg = 1,

    condensateur dcharg = 0. Avantage : intgration leve, faible cot. Inconvnient :

    ncessite un rafrachissement priodique cause du courant de fuite des condensateurs.

    Application : ralisation de la mmoire vive des ordinateurs (barrettes mmoire SIMM :

    Single In-line Memory module).

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 9

    Chapitre II : Le microprocesseur Intel 8086

    I. Description physique du 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 I,

    PII, ...). Il se prsente sous la forme dun botier DIP (Dual In-line Package) 40 broches :

    Botier DIP du microprocesseur 8086 Schma fonctionnel du 8086

    Figure n1 : Botier DIP et schma fonctionnel du microprocesseur 8086.

    II. Description et utilisation des signaux du 8086 :

    CLK : entre du signal dhorloge qui cadence le fonctionnement du microprocesseur. Ce signal provient dun gnrateur dHorloge : le 8284.

    Figure n2 : Gnrateur dHorloge (8284) du microprocesseur 8086.

    RESET : entre de remise zro du microprocesseur. Lorsque cette entre est mise ltat haut pendant au moins 4 priodes dhorloge, le microprocesseur est rinitialis : il va excuter linstruction se trouvant ladresse FFFF0H (adresse de bootstrap). Le signal de RESET est fourni par le gnrateur dhorloge. READY : entre de synchronisation avec la mmoire. Ce signal provient galement du

    gnrateur dhorloge. TEST : entre de mise en attente du microprocesseur dun vnement extrieur. MN/MX : entre de choix du mode de fonctionnement du microprocesseur :

    Mode minimum (MN/MX = 1) : le 8086 fonctionne de manire autonome, il gnre lui-mme le bus de commande (RD, WR, ...) ;

    Mode maximum (MN/MX=0) : Ces signaux de commande sont produits par un contrleur de bus, le 8288. Ce mode permet de raliser des systmes multiprocesseurs.

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 10

    NMI et INTR : entres de demande dinterruption. INTR : interruption normale, NMI (Non Maskable Interrupt) : interruption prioritaire.

    INTA : Interrupt Acknowledge, indique que le microprocesseur accepte linterruption. HOLD et HLDA : signaux de demande daccord daccs direct la mmoire (DMA). S0 S7 : signaux dtat indiquant le type dopration en cours sur le bus. A16/S3 A19/S6 : 4 bits de poids fort du bus dadresses, multiplexs avec 4 bits dtat. AD0 AD15 : 16 bits de poids faible du bus dadresses, multiplexs avec 16 bits de donnes. Le bus A/D est multiplex (multiplexage temporel) do la ncessit dun dmultiplexage pour obtenir sparment les bus dadresses et de donnes : 16 bits de donnes (microprocesseur 16 bits) ; 20 bits dadresses, do 220 = 1 Mga adresses dans lespace mmoire adressable par le

    8086.

    Chronogramme du bus A/D :

    Figure n3 : Chronogramme du bus A/D du microprocesseur 8086.

    Le dmultiplexage des signaux AD0 AD15 (ou A16/S3 A19/S6) se fait en mmorisant

    ladresse lorsque celle-ci est prsente sur le bus A/D, laide dun verrou (latch), ensemble de bascules D. La commande de mmorisation de ladresse est gnre par le microprocesseur : cest le signal ALE, Address Latch Enable.

    Figure n4 : Circuit de dmultiplexage A/D du microprocesseur 8086.

    Fonctionnement :

    si ALE = 1, le verrou est transparent (Q = D) ; si ALE = 0, mmorisation de la dernire valeur de D sur les sorties Q; les signaux de lecture (RD) ou dcriture (WR) ne sont gnrs par le microprocesseur que

    lorsque les donnes sont prsentes sur le bus A/D.

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 11

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

    Figure n5 : Exemples de bascules D : circuits 8282.

    RD : Read, signal de lecture dune donne. WR : Write, signal dcriture dune donne. M/IO : Memory/Input-Output, indique si le 8086 adresse la mmoire (M/IO = 1) ou les

    entres/sorties (M/IO = 0).

    DEN : Data Enable, indique que des donnes sont en train de circuler sur le bus A/D

    (quivalent de ALE pour les donnes).

    DT/R : Data Transmit/Receive, indique le sens de transfert des donnes :

    DT/R = 1 : donnes mises par le microprocesseur (criture) ; DT/R = 0 : donnes reues par le microprocesseur (lecture).

    Figure n6 : Chronogramme de bascules D.

    Les signaux DEN et DT/R sont utiliss pour la commande de tampons de bus (Buffers)

    permettant damplifier le courant fourni par le microprocesseur sur le bus de donnes. Exemples de tampons de bus : circuits transmetteurs bidirectionnels 8286 ou 74245.

    Figure n7 : Circuits transmetteurs bidirectionnels 8286 ou 74245.

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 12

    BHE : Bus High Enable, signal de lecture de loctet de poids fort du bus de donnes. Le 8086 possde un bus dadresses sur 20 bits, do la capacit dadressage de 1 Mo ou 512 Kmots de 16 bits (bus de donnes sur 16 bits).

    Le mga-octet adressable est divis en deux banques de 512 Ko chacune : la banque

    infrieure (ou paire) et la banque suprieure (ou impaire). Ces deux banques sont

    slectionnes par :

    A0 pour la banque paire qui contient les octets de poids faible ; BHE pour la banque impaire qui contient les octets de poids fort.

    Figure n8 : Banque infrieure (paire) et la banque suprieure (impaire) .

    Seuls les bits A1 A19 servent dsigner une case mmoire dans chaque banque de 512

    Ko. Le microprocesseur peut ainsi lire et crire des donnes sur 8 bits ou sur 16 bits :

    BHE A0 Octets transfrs

    0 0 les deux octets (mot complet)

    0 1 octet fort (adresse impaire)

    1 0 octet faible (adresse paire)

    1 1 aucun octet

    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.

    Ralisation des deux banques avec plusieurs botiers mmoire :

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 13

    Figure n9 : Ralisation des deux banques avec plusieurs botiers mmoire.

    Cration du bus systme du 8086 :

    Figure n10 : Cration du bus systme du 8086.

    III. Organisation interne du 8086 :

    Le 8086 est constitu de deux units fonctionnant en parallle :

    Lunit dexcution (EU : Excution Unit) ; Lunit dinterface de bus (BIU : Bus Interface Unit).

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 14

    Figure n11 : Lunit dexcution et lunit dinterface du 8086.

    Rle des deux units :

    Lunit dinterface de bus (BIU) recherche les instructions en mmoire et les range dans une file dattente ;

    Lunit dexcution (EU) excute les instructions contenues dans la file dattente. Les deux units fonctionnent simultanment, do une acclration du processus dexcution

    dun programme (fonctionnement selon le principe du pipe-line). Le microprocesseur 8086 contient 14 registres rpartis en 4 groupes :

    Registres gnraux : 4 registres sur 16 bits.

    AX = (AH,AL) ;

    BX = (BH,BL) ;

    CX = (CH,CL) ;

    DX = (DH,DL).

    Ils peuvent tre galement considrs comme 8 registres sur 8 bits. Ils servent contenir

    temporairement des donnes. Ce sont des registres gnraux mais ils peuvent tre utiliss pour des

    oprations particulires. Exemple : AX = accumulateur, CX = compteur.

    Registres de pointeurs et dindex : 4 registres sur 16 bits. Pointeurs :

    SP : Stack Pointer, pointeur de pile (la pile est une zone de sauvegarde de donnes en

    cours dexcution dun programme) ; BP : Base Pointer, pointeur de base, utilis pour adresser des donnes sur la pile.

    Index :

    SI : Source Index ;

    DI : Destination Index.

    Ils sont utiliss pour les transferts de chanes doctets entre deux zones mmoire. Les pointeurs et les index contiennent des adresses de cases mmoire.

    Pointeur dinstruction et indicateurs (flags) : 2 registres sur 16 bits. Le pointeur dinstruction : IP, contient ladresse de la prochaine instruction excuter. Le registre des indicateurs (flags)

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 15

    C : indicateur de retenue (carry) ;

    P : indicateur de parit ;

    A : indicateur de retenue auxiliaire ;

    Z : indicateur de zro ;

    S : indicateur de signe ;

    T : indicateur dexcution pas pas (trap) ; I : indicateur dautorisation dinterruption ; D : indicateur de dcrmentation ;

    O : indicateur de dpassement (overflow).

    Figure n12 : Le registre falgs du 8086.

    Registres de segments : 4 registres sur 16 bits. CS : Code Segment, registre de segment de code ;

    DS : Data Segment, registre de segment de donnes ;

    SS : Stack Segment, registre de segment de pile ;

    ES : Extra Segment, registre de segment supplmentaire pour les donnes ;

    Les registres de segments, associs aux pointeurs et aux index, permettent au

    microprocesseur 8086 dadresser lensemble de la mmoire. IV. Gestion de la mmoire par le 8086 :

    Lespace mmoire adressable par le 8086 est de 220 = 1 048 576 octets = 1 Mo (20 bits dadresses). Cet espace est divis en segments. Un segment est une zone mmoire de 64 Ko (65 536 octets) dfinie par son adresse de dpart qui doit tre un multiple de 16.

    Dans une telle adresse, les 4 bits de poids faible sont zro. On peut donc reprsenter

    ladresse dun segment avec seulement ses 16 bits de poids fort, les 4 bits de poids faible tant implicitement 0.

    Pour dsigner une case mmoire parmi les 216

    = 65 536 contenues dans un segment, il suffit

    dune valeur sur 16 bits. Ainsi, une case mmoire est repre par le 8086 au moyen de deux quantits sur 16 bits :

    Ladresse dun segment ; Un dplacement ou offset (appel aussi adresse effective) dans ce segment.

    Cette mthode de gestion de la mmoire est appele segmentation de la mmoire.

    Figure n13 : Segmentation de mmoire du 8086.

    La donne dun couple (segment,offset) dfinit une adresse logique, note sous la forme segment : offset.

    Ladresse dune case mmoire donne sous la forme dune quantit sur 20 bits (5 digits hexa) est appele adresse physique car elle correspond la valeur envoye rellement sur le bus

    dadresses A0 - A19.

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 16

    Figure n14 : Correspondance entre adresse logique et adresse physique.

    Ainsi, ladresse physique se calcule par lexpression : Adresse physique = 16 segment + offset

    Car le fait dinjecter 4 zros en poids faible du segment revient effectuer un dcalage de 4 positions vers la gauche, cest dire une multiplication par 24 = 16.

    A un instant donn, le 8086 a accs 4 segments dont les adresses se trouvent dans les

    registres de segment CS, DS, SS et ES. Le segment de code contient les instructions du programme,

    le segment de donnes contient les donnes manipules par le programme, le segment de pile

    contient la pile de sauvegarde et le segment supplmentaire peut aussi contenir des donnes.

    Le registre CS est associ au pointeur dinstruction IP, ainsi la prochaine instruction excuter se trouve ladresse logique CS : IP.

    Figure n15 :.

    De mme, les registres de segments DS et ES peuvent tre associs un registre dindex. Exemple : DS : SI, ES : DI. Le registre de segment de pile peut tre associ aux registres de

    pointeurs : SS : SP ou SS : BP. Mmoire accessible par le 8086 un instant donn :

    Figure n16 : .

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 17

    Remarque : les segments ne sont pas ncessairement distincts les uns des autres, ils peuvent se

    chevaucher ou se recouvrir compltement.

    Figure n17 : .

    Le nombre de segments utilis dfinit le modle mmoire du programme. Contenu des

    registres aprs un RESET du microprocesseur :

    IP = 0000H

    CS = FFFFH

    DS = 0000H

    ES = 0000H

    SS = 0000H

    Puisque CS contient la valeur FFFFH et IP la valeur 0000H, la premire instruction excute

    par le 8086 se trouve donc ladresse logique FFFFH : 0000H, correspondant ladresse physique FFFF0H (bootstrap). Cette instruction est gnralement un saut vers le programme principal qui

    initialise ensuite les autres registres de segment.

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 18

    Chapitre III : La programmation en assembleur du microprocesseur 8086

    I. Gnralits :

    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 groupes :

    Instructions de transfert de donnes ; Instructions arithmtiques ; Instructions logiques ; Instructions de branchement ...

    II. Les instructions de transfert :

    Elles permettent de dplacer des donnes dune source vers une destination : Registre vers mmoire ; Registre vers registre ; Mmoire vers registre.

    Syntaxe : MOV destination, source

    Remarques :

    - Le microprocesseur 8086 nautorise pas les transferts de mmoire vers mmoire (pour ce faire, il faut passer par un registre intermdiaire).

    - MOV est labrviation du verbe to move : dplacer. II.1. Mode dadressage :

    Il existe diffrentes faons de spcifier ladresse dune case mmoire dans une instruction (ce sont les modes dadressage). Exemples de modes dadressage simples : mov ax,bx : charge le contenu du registre BX dans le registre AX. Dans ce cas, le transfert

    se fait de registre registre : adressage par registre ;

    mov al,12H : charg le registre AL avec la valeur 12H. La donne est fournie immdiatement avec linstruction : adressage immdiat.

    mov bl,[1200H] : transfre le contenu de la case mmoire dadresse effective (offset) 1200H vers le registre BL. Linstruction comporte ladresse de la case mmoire o se trouve la donne : adressage direct. Ladresse effective reprsente loffset de la case mmoire dans le segment de donnes (segment dont ladresse est contenue dans le registre DS) : segment par dfaut.

    Figure n1 : adressage direct.

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 19

    On peut changer le segment lors dun adressage direct en ajoutant un prfixe de segment, exemple : mov bl,es :[1200H]. On parle alors de forage de segment.

    Figure n2 : Forage de segment.

    Remarque : Dans le cas de ladressage immdiat de la mmoire, il faut indiquer le format de la donne : octet ou mot (2 octets) car le microprocesseur 8086 peut manipuler des donnes sur 8 bits

    ou 16 bits. Pour cela, on doit utiliser un spcificateur de format :

    mov byte ptr [1100H],65H : transfre la valeur 65H (sur 1 octet) dans la case mmoire doffset 1100H ;

    mov word ptr [1100H],65H : transfre la valeur 0065H (sur 2 octets) dans les cases mmoire

    doffset 1100H et 1101H.

    Figure n3 : Spcification de format lors de ladressage direct.

    Remarque : Les microprocesseurs Intel rangent loctet de poids faible dune donne sur plusieurs octets ladresse la plus basse (format Little Endian). II.2. Modes dadressage volus : Adressage bas : loffset est contenu dans un registre de base BX ou BP.

    Exemples :

    - mov al,[bx] : transfre la donne dont loffset est contenu dans le registre de base BX vers le registre AL. Le segment associ par dfaut au registre BX est le segment

    de donnes : on dit que ladressage est bas sur DS; - mov al,[bp] : le segment par dfaut associ au registre de base BP est le segment de

    pile. Dans ce cas, ladressage est bas sur SS.

    Figure n4 : Adressage bas.

    adressage index : semblable ladressage bas, sauf que loffset est contenu dans un registre dindex SI ou DI, associs par dfaut au segment de donnes. Exemples :

    - mov al,[si] : charge le registre AL avec le contenu de la case mmoire dont loffset est contenu dans SI ;

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 20

    - mov [di],bx : charge les cases mmoire doffset DI et DI + 1 avec le contenu du registre BX.

    Remarque : Une valeur constante peut ventuellement tre ajoute aux registres de base ou dindex pour obtenir loffset. Exemple :

    mov [si+100H],ax

    qui peut aussi scrire mov [si][100H],ax

    ou encore

    mov 100H[si],ax

    Les modes dadressage bass ou indexs permettent la manipulation de tableaux rangs en mmoire. Exemple :

    mov si,0

    mov word ptr table[si],1234H

    mov si,2

    mov word ptr table[si],5678H

    Dans cet exemple, table reprsente loffset du premier lment du tableau et le registre SI joue le rle dindice de tableau :

    Figure n5 : Adressage index.

    Adressage bas et index : loffset est obtenu en faisant la somme dun registre de base, dun registre dindex et dune valeur constante. Exemple :

    mov ah,[bx+si+100H]

    Ce mode dadressage permet ladressage de structures de donnes complexes : matrices, enregistrements, ... Exemple :

    mov bx,10

    mov si,15

    mov byte ptr matrice[bx][si],12H

    Dans cet exemple, BX et SI jouent respectivement le rle dindices de ligne et de colonne dans la matrice.

    III. Les instructions arithmtiques :

    Les instructions arithmtiques de base sont laddition, la soustraction, la multiplication et la division qui incluent diverses variantes. Plusieurs modes dadressage sont possibles. III.1. Laddition :

    ADD oprande1,oprande2

    Lopration effectue est : oprande1 oprande1 + oprande2. Exemples :

    add ah,[1100H] : ajoute le contenu de la case mmoire doffset 1100H laccumulateur AH (adressage direct) ;

    add ah,[bx] : ajoute le contenu de la case mmoire pointe par BX laccumulateur AH (adressage bas) ;

    add byte ptr [1200H],05H : ajoute la valeur 05H au contenu de la case mmoire doffset 1200H (adressage immdiat).

    III.2. La soustraction :

    SUB oprande1,oprande2

    Lopration effectue est : oprande1 oprande1 oprande2.

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 21

    III.3. La multiplication :

    MUL oprande, o oprande est un registre ou une case mmoire.

    Cette instruction effectue la multiplication du contenu de AL par un oprande sur 1 octet ou

    du contenu de AX par un oprande sur 2 octets. Le rsultat est plac dans AX si les donnes

    multiplier sont sur 1 octet (rsultat sur 16 bits), dans (DX,AX) si elles sont sur 2 octets (rsultat sur

    32 bits).

    Exemples :

    mov al,51 mov bl,32

    mul bl

    AX = 51 32 mov ax,4253

    mov bx,1689

    mul bx

    (DX, AX) = 4253 1689 mov al,43

    mov byte ptr [1200H],28

    mul byte ptr [1200H]

    AX = 43 28 mov ax,1234

    mov word ptr [1200H],5678

    mul word ptr [1200H]

    (DX, AX) = 1234 5678 III.4. La division :

    DIV oprande, o oprande est un registre ou une case mmoire.

    Cette instruction effectue la division du contenu de AX par un oprande sur 1 octet ou le

    contenu de (DX,AX) par un oprande sur 2 octets. Rsultat : si loprande est sur 1 octet, alors AL = quotient et AH = reste ; si loprande est sur 2 octets, alors AX = quotient et DX = reste. Exemples :

    mov ax,35 mov bl,10

    div bl

    AL = 3 (quotient) et AH = 5 (reste) mov dx,0

    mov ax,1234

    mov bx,10

    div bx

    AX = 123 (quotient) et DX = 4 (reste) III.5. Autres instructions arithmtiques :

    ADC : addition avec retenue ; SBB : soustraction avec retenue ; INC : incrmentation dune unit ; DEC : dcrmentation dune unit ; IMUL : multiplication signe ; IDIV : division signe.

    IV. Les instructions logiques :

    Ce sont des instructions qui permettent de manipuler des donnes au niveau des bits. Les

    oprations logiques de base sont :

    ET; OU;

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 22

    OU exclusif ; Complment 1; Complment 2; Dcalages et rotations.

    Les diffrents modes dadressage sont disponibles. IV.1. ET logique :

    AND oprande1,oprande2

    Lopration effectue est : oprande1 oprande1 ET oprande2. Application : masquage de bits pour mettre zro certains bits dans un mot.

    Exemple 01 :

    mov al,10010110B

    mov bl,11001101B

    and al, bl

    AL= 1 0 0 1 0 1 1 0 BL= 1 1 0 0 1 1 0 1

    AL= 1 0 0 0 0 1 0 0

    Exemple 02 : masquage des bits 0, 1, 6 et 7 dans un octet :

    7 6 5 4 3 2 1 0

    0 1 0 1 0 1 1 1

    0 0 1 1 1 1 0 0 masque 0 0 0 1 0 1 0 0

    IV.2. OU logique :

    OR oprande1,oprande2

    Lopration effectue est : oprande1 oprande1 OU oprande2. Application : mise 1 dun ou de plusieurs bits dans un mot.

    Exemple : dans le mot 10110001B on veut mettre 1 les bits 1 et 3 sans modifier les autres bits.

    7 6 5 4 3 2 1 0

    1 0 1 1 0 0 0 1

    0 0 0 0 1 0 1 0 masque 1 0 1 1 1 0 1 1

    Les instructions correspondantes peuvent scrire : mov ah,10110001B

    or ah,00001010B

    IV.3. Complment 1 :

    NOT oprande

    Lopration effectue est : oprande NOT(oprande). Exemple :

    mov al,10010001B

    not al

    AL = 10010001B AL = 01101110B

    IV.4. Complment 2 :

    NEG oprande

    Lopration effectue est : oprande NOT(oprande) + 1. Exemple :

    mov al,25

    mov bl,12

    neg bl

    add al,bl

    AL = 25 + (12) = 13

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 23

    IV.5. OU exclusif :

    XOR oprande1,oprande2

    Lopration effectue est : oprande1 oprande1 oprande2. Exemple : mise zro dun registre :

    mov al,25

    xor al,al

    AL = 0 IV.6. Instructions de dcalages et de rotations :

    Ces instructions dplacent dun certain nombre de positions les bits dun mot vers la gauche ou vers la droite.

    Dans les dcalages, les bits qui sont dplacs sont remplacs par des zros. Il y a les

    dcalages logiques (oprations non signes) et les dcalages arithmtiques (oprations signes).

    Dans les rotations, les bits dplacs dans un sens sont rinjects de lautre ct du mot. IV.6.1. Dcalage logique vers la droite (Shift Right) :

    SHR oprande,n

    Cette instruction dcale loprande de n positions vers la droite. Exemple 01 :

    mov al,11001011B

    shr al,1

    entre dun 0 la place du bit de poids fort ; le bit sortant passe travers

    lindicateur de retenue CF. Remarque : si le nombre de bits dcaler est suprieur 1, ce nombre doit tre plac dans le

    registre CL ou CX.

    Exemple 02 : dcalage de AL de trois positions vers la droite :

    mov cl,3

    shr al,cl

    IV.6.2. Dcalage logique vers la gauche (Shift Left) :

    SHL oprande,n

    Cette instruction dcale loprande de n positions vers la droite. Exemple :

    mov al,11001011B

    shl al,1

    entre dun 0 la place du bit de poids faible ; le bit sortant passe travers

    lindicateur de retenue CF. Mme remarque que prcdemment si le nombre de positions dcaler est suprieur 1.

    IV.6.3. Dcalage arithmtique vers la droite :

    SAR oprande,n

    Ce dcalage conserve le bit de signe bien que celui-ci soit dcal.

    Exemple :

    mov al,11001011B

    sar al,1

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 24

    le bit de signe est rinject.

    IV.6.4. Dcalage arithmtique vers la gauche :

    SAR oprande,n

    Identique au dcalage logique vers la gauche.

    IV.6.5. Applications des instructions de dcalage :

    Cadrage droite dun groupe de bits. Exemple : on veut avoir la valeur du quartet de poids fort du registre AL :

    mov al,11001011B

    mov cl,4

    shr al,cl

    AL = 00001100B Test de ltat dun bit dans un mot.

    Exemple : on veut dterminer ltat du bit 5 de AL : mov cl,6

    shr al,cl

    ou

    mov cl,3

    shl al,cl

    avec un dcalage de 6 positions vers la droite ou 4 positions vers la gauche, le bit 5 de AL est transfr dans lindicateur de retenue CF. Il suffit donc de tester cet indicateur.

    Multiplication ou division par une puissance de 2 : Un dcalage droite revient faire une division par 2 et un dcalage gauche, une multiplication par 2.

    Exemple :

    mov al,48

    mov cl,3

    shr al,cl

    AL = 48/23 = 6 IV.6.6. Rotation droite (Rotate Right) :

    ROR oprande,n

    Cette instruction dcale loprande de n positions vers la droite et rinjecte par la gauche les bits sortant.

    Exemple :

    mov al,11001011B

    ror al,1

    rinjection du bit sortant qui est copi dans lindicateur de retenue CF.

    IV.6.7. Rotation gauche (Rotate Left) :

    ROL oprande,n

    Cette instruction dcale loprande de n positions vers la gauche et rinjecte par la droite les bits sortant.

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 25

    Exemple :

    mov al,11001011B

    rol al,1

    rinjection du bit sortant qui est copi dans lindicateur de retenue CF.

    IV.6.8. Rotation droite avec passage par lindicateur de retenue (Rotate Right through Carry) RCR oprande,n

    Cette instruction dcale loprande de n positions vers la droite en passant par lindicateur de retenue CF.

    Exemple :

    mov al,11001011B

    rcr al,1

    le bit sortant par la droite est copi dans lindicateur de retenue CF et la valeur

    prcdente de CF est rinjecte par la gauche.

    IV.6.9. Rotation gauche avec passage par lindicateur de retenue (Rotate Left through Carry) : RCL oprande,n

    Cette instruction dcale loprande de n positions vers la gauche en passant par lindicateur de retenue CF.

    Exemple :

    mov al,11001011B

    rcl al,1

    le bit sortant par la gauche est copi dans lindicateur de retenue CF et la valeur

    prcdente de CF est rinjecte par la droite.

    V. Les instructions de branchement :

    Les instructions de branchement (ou saut) permettent de modifier lordre dexcution des instructions du programme en fonction de certaines conditions. Il existe 3 types de saut :

    Saut inconditionnel ; Sauts conditionnels ; Sppel de sous-programmes.

    V.1. Instruction de saut inconditionnel : JMP label

    Cette instruction effectue un saut (jump) vers le label spcifi. Un label (ou tiquette) est

    une reprsentation symbolique dune instruction en mmoire :

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 26

    Exemple :

    Remarque : linstruction JMP ajoute au registre IP (pointeur dinstruction) le nombre doctets (distance) qui spare linstruction de saut de sa destination. Pour un saut en arrire, la distance est ngative (code en complment 2).

    V.2. Instructions de sauts conditionnels : condition label

    Un saut conditionnel nest excut que si une certaine condition est satisfaite, sinon lexcution se poursuit squentiellement linstruction suivante.

    La condition du saut porte sur ltat de lun ou des indicateurs dtat (flags) du microprocesseur :

    Remarque1 : les indicateurs sont positionns en fonction du rsultat de la dernire opration.

    Exemple1 :

    Remarque2 : il existe un autre type de saut conditionnel, les sauts arithmtiques. Ils suivent en

    gnral linstruction de comparaison : CMP oprande1,oprande2

    Exemple2 :

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 27

    V.3. Exemple dapplication des instructions de sauts conditionnels : On veut additionner deux nombres signs N1 et N2 se trouvant respectivement aux offsets

    1100H et 1101H. Le rsultat est rang loffset 1102H sil est positif, loffset 1103H sil est ngatif et loffset 1104H sil est nul :

    VI. Appel de sous-programmes :

    Pour viter la rptition dune mme squence dinstructions plusieurs fois dans un programme, on rdige la squence une seule fois en lui attribuant un nom (au choix) et on lappelle lorsquon en a besoin. Le programme appelant est le programme principal. La squence appele est un sous-programme ou procdure.

    VI.1. Ecriture dun sous-programme :

    Remarque : une procdure peut tre de type NEAR si elle se trouve dans le mme segment ou de

    type FAR si elle se trouve dans un autre segment. Exemple :

    VI.2. Appel dun sous-programme par le programme principal : CALL procdure

    Lors de lexcution de linstruction CALL, le pointeur dinstruction IP est charg avec

    ladresse de la premire instruction du sous-programme. Lors du retour au programme appelant, linstruction suivant le CALL doit tre excute, cest--dire que IP doit tre recharg avec ladresse de cette instruction.

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 28

    Avant de charger IP avec ladresse du sous-programme, ladresse de retour au programme principal, cest--dire le contenu de IP, est sauvegarde dans une zone mmoire particulire appele pile. Lors de lexcution de linstruction RET, cette adresse est rcupre partir de la pile et recharge dans IP, ainsi le programme appelant peut se poursuivre.

    VI.3. Fonctionnement de la pile :

    La pile est une zone mmoire fonctionnant en mode LIFO (Last In First Out : dernier

    entre, premier sortie). Deux oprations sont possibles sur la pile :

    Empiler une donne : placer la donne au sommet de la pile ; Dpiler une donne : lire la donne se trouvant au sommet de la pile.

    Le sommet de la pile est repr par un registre appel pointeur de pile (SP : Stack Pointer)

    qui contient ladresse de la dernire donne empile. La pile est dfinie dans le segment de pile dont ladresse de dpart est contenue dans le

    registre SS.

    Remarque :

    La pile et le programme croissent en sens inverse pour diminuer le risque de collision entre

    le code et la pile dans le cas o celle-ci est place dans le mme segment que le code (SS = CS).

    Lors de lappel un sous-programme, ladresse de retour au programme appelant (contenu de IP) est empile et le pointeur de pile SP est automatiquement dcrment. Au retour du sous-

    programme, le pointeur dinstruction IP est recharg avec la valeur contenue sommet de la pile et SP est incrment.

    La pile peut galement servir sauvegarder le contenu de registres qui ne sont pas

    automatiquement sauvegards lors de lappel `a un sous programme : Instruction dempilage : PUSH oprande Instruction de dpilage : POP oprande

    o oprande est un registre ou une donne sur 2 octets (on ne peut empiler que des mots de

    16 bits).

    Exemple :

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 29

    Remarque : la valeur de SP doit tre initialise par le programme principal avant de pouvoir

    utiliser la pile.

    VI.4. Utilisation de la pile pour le passage de paramtres :

    Pour transmettre des paramtres une procdure, on peut les placer sur la pile avant lappel de la procdure, puis celle-ci les rcupre en effectuant un adressage bas de la pile en utilisant le

    registre BP.

    Exemple :

    Soit une procdure effectuant la somme de deux nombres et retournant le rsultat dans le

    registre AX :

    Programme principal :

    Procdure somme :

    Linstruction ret 4 permet de retourner au programme principal et dincrmenter le pointeur

    de pile de 4 units pour dpiler les paramtres afin de remettre la pile dans son tat initial.

    Etat de la pile :

    VII. Mthodes de programmation :

    VII.1. Etapes de la ralisation dun programme : Dfinir le problme rsoudre : que faut-il faire exactement ? Dterminer des algorithmes, des organigrammes : comment faire ? Par quoi commencer,

    puis poursuivre ?

    Rdiger le programme (code source) : - Utilisation du jeu dinstructions (mnmoniques) ; - cration de documents explicatifs (documentation).

    Tester le programme en rel ; Corriger les erreurs (bugs) ventuelles : dboguer le programme puis refaire des tests

    jusqu obtention dun programme fonctionnant de manire satisfaisante. VII.2. Langage machine et assembleur :

    Langage machine : codes binaires correspondant aux instructions ; Assembleur : logiciel de traduction du code source crit en langage assembleur

    (mnmoniques).

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 30

    VII.3. Ralisation pratique dun programme : Rdaction du code source en assembleur laide dun diteur (logiciel de traitement de texte

    ASCII) :

    - edit sous MS-DOS, - notepad (bloc-note) sous Windows,

    Assemblage du code source (traduction des instructions en codes binaires) avec un assembleur :

    - MASM de Microsoft, - TASM de Borland, - A86 disponible en shareware sur Internet, ... - SIM 8086

    Pour obtenir le code objet : code machine excutable par le microprocesseur ;

    Chargement en mmoire centrale et excution : rle du systme dexploitation (ordinateur) ou dun moniteur (carte de dveloppement base de microprocesseur). Pour la mise au point (dbogage) du programme, on peut utiliser un programme daide la

    mise au point (comme DEBUG sous MS-DOS) permettant :

    Lexcution pas pas; La visualisation du contenu des registres et de la mmoire ; La pose de points darrt ...

    VII.4. Structure dun fichier source en assembleur : Pour faciliter la lisibilit du code source en assembleur, on le rdige sous la forme suivante :

    VII.5. Directives pour lassembleur : Origine du programme en mmoire : ORG offset

    Exemple : org 1000H

    Dfinitions de constantes : nom constante EQU valeur Exemple : escape equ 1BH

    Rservation de cases mmoires :

    DB : Define Byte, rservation dun octet ; DW : Define Word, rservation dun mot (2 octets). Exemples :

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 31

    Chapitre IV : Les interfaces dentres/sorties I. Dfinitions :

    Une interface dentres/sorties est un circuit intgr permettant au microprocesseur de communiquer avec lenvironnement extrieur (priphriques) : clavier, cran, imprimante, modem, disques, processus industriel, ...

    Les interfaces dE/S sont connectes au microprocesseur travers les bus dadresses, de donnes et de commandes.

    Les points daccs aux interfaces sont appels ports.

    Exemples :

    Schma synoptique dun circuit dE/S :

    II. Adressage des ports dE/S : Un circuit dE/S possde des registres pour grer les changes avec les priphriques :

    Registres de configuration ; Registres de donnes.

    A chaque registre est assign une adresse : le microprocesseur accde un port dE/S en spcifiant ladresse de lun de ses registres.

    Le microprocesseur peut voir les adresses des ports dE/S de deux manires : Adressage cartographique : les adresses des ports dE/S appartiennent au mme espace

    mmoire que les circuits mmoire (on dit que les E/S sont mappes en mmoire) :

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 32

    Consquences :

    - Lespace dadressage des mmoires diminue ; - Ladressage des ports dE/S se fait avec une adresse de mme longueur (mme nombre de

    bits) que pour les cases mmoires ;

    - Toutes les instructions employes avec des cases mmoires peuvent tre appliques aux ports dE/S : les mmes instructions permettent de lire et crire dans la mmoire et les ports dE/S, tous les modes dadressage tant valables pour les E/S.

    Adressage indpendant : le microprocesseur considre deux espaces distincts : - Lespace dadressage des mmoires ; - Lespace dadressage des ports dE/S.

    Cest le cas du microprocesseur 8086 :

    Consquences :

    - Contrairement ladressage cartographique, lespace mmoire total adressable nest pas diminu ;

    - Ladressage des port dE/S peut se faire avec une adresse plus courte (nombre de bits infrieur) que pour les circuits mmoires ;

    - Les instructions utilises pour laccs la mmoire ne sont plus utilisables pour laccs aux ports dE/S : ceux-ci disposent dinstructions spcifiques ;

    - Une mme adresse peut dsigner soit une case mmoire, soit un port dE/S : le microprocesseur doit donc fournir un signal permettant de diffrencier ladressage de la mmoire de ladressage des ports dE/S.

    Remarque : Ladressage indpendant des ports dE/S nest possible que pour les microprocesseurs possdant un signal permettant de diffrencier ladressage de la mmoire de ladressage des ports dE/S ainsi que les instructions spcifiques pour laccs aux ports dE/S. Par contre, ladressage cartographique est possible pour tous les microprocesseurs.

    III. Gestion des ports dE/S par le 8086 : Le 8086 dispose dun espace mmoire de 1 Mo (adresse dune case mmoire sur 20 bits) et

    dun espace dE/S de 64 Ko (adresse dun port dE/S sur 16 bits). Le signal permettant de diffrencier ladressage de la mmoire de ladressage des ports

    dE/S est la ligne M/IO : - Pour un accs la mmoire, M/IO = 1 ; - Pour un accs aux ports dE/S, M/IO = 0.

    Ce signal est utilis pour valider le dcodage dadresse dans les deux espaces :

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 33

    Les instructions de lecture et dcriture dun port dE/S sont respectivement les instructions

    IN et OUT. Elles placent la ligne M/IO 0 alors que linstruction MOV place celle-ci 1. III.1. Lecture dun port dE/S :

    - Si ladresse du port dE/S est sur un octet : IN AL,adresse : lecture dun port sur 8 bits ;

    IN AX,adresse : lecture dun port sur 16 bits. - Si ladresse du port dE/S est sur deux octets :

    IN AL,DX : lecture dun port sur 8 bits ; IN AX,DX : lecture dun port sur 16 bits. O le registre DX contient ladresse du port dE/S lire.

    III.2. Ecriture dun port dE/S : - Si ladresse du port dE/S est sur un octet :

    OUT adresse,AL : criture dun port sur 8 bits ; OUT adresse,AX : criture dun port sur 16 bits.

    - Si ladresse du port dE/S est sur deux octets : OUT DX,AL : criture dun port sur 8 bits ; OUT DX,AX : criture dun port sur 16 bits.

    O le registre DX contient ladresse du port dE/S crire. Exemples :

    Lecture dun port dE/S sur 8 bits ladresse 300H : mov dx,300H

    in al,dx

    Ecriture de la valeur 1234H dans le port dE/S sur 16 bits ladresse 49H : mov ax,1234H

    out 49H,ax

    IV. Linterface parallle 8255 : Le rle dune interface parallle est de transfrer des donnes du microprocesseur vers des

    priphriques et inversement, tous les bits de donnes tant envoys ou reus simultanment.

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 34

    Le 8255 est une interface parallle programmable : elle peut tre configure en entre et/ou

    en sortie par programme.

    Brochage du 8255 Schma fonctionnel :

    Le 8255 contient 4 registres :

    Trois registres contenant les donnes prsentes sur les ports A, B et C; Un registre de commande pour la configuration des ports A, B et C en entres et/ou en

    sorties.

    IV.1. Accs aux registres du 8255 : Les lignes dadresses A0 et A1 dfinissent les adresses des registres du 8255 :

    Remarque : Le registre de commande est accessible uniquement en criture, la lecture de ce

    registre nest pas autorise. IV.2. Configuration du 8255 :

    Les ports peuvent tre configurs en entres ou en sorties selon le contenu du registre de

    commande. De plus le 8255 peut fonctionner selon 3 modes : mode 0, mode 1 ou mode 2.

    Le mode 0 est le plus simple : les ports sont configurs en entres/sorties de base. Les

    donnes crites dans les registres correspondants sont mmorises sur les lignes de sorties ; ltat des lignes dentres est recopi dans les registres correspondants et nest pas mmoris.

    Les modes 1 et 2 sont plus complexes. Ils sont utiliss pour le dialogue avec des

    priphriques ncessitant un asservissement.

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 35

    IV.3. Structure du registre de commande :

    Connexion du 8255 sur les bus du 8086 : le bus de donnes du 8255 est sur 8 bits alors que

    celui du microprocesseur 8086 est sur 16 bits. On peut donc connecter le bus de donnes du 8255

    sur les lignes de donnes de poids faible du 8086 (D0 - D7) ou sur celles de poids fort (D8 - D15).

    Une donne est envoye (ou reue) par le microprocesseur 8086 :

    Sur la partie faible du bus de donnes lorsque ladresse crire (ou lire) est paire : validation par A0 ;

    Sur la partie haute lorsque ladresse est impaire : validation par BHE. Ainsi lun de ces deux signaux A0 ou BHE doit tre utilis pour slectionner le 8255 :

    Consquence : les adresses des registres du 8255 se trouvent des adresses paires

    (validation par A0) ou impaires (validation par BHE).

    Le dcodeur dadresses dtermine ladresse de base du 8255 ; les lignes A1 et A2 dterminent les adresses des registres du 8255.

    Exemple : connexion du 8255 sur la partie faible du bus de donnes du 8086, avec dcodage

    dadresses incomplet (les lignes dadresses A3 - A15 ne sont pas toutes utilises) :

    IV.4. Dtermination de ladresse du 8255 :

    A2 = 0 et A1 = 0 : adresse du port A = adresse de base + 0 = 300H ; A2 = 0 et A1 = 1 : adresse du port B = adresse de base + 2 = 302H ; A2 = 1 et A1 = 0 : adresse du port C = adresse de base + 4 = 304H ; A2 = 1 et A1 = 1 : adresse du registre de commande = adresse de base + 6 = 306H.

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 36

    Remarque : le dcodage dadresses tant incomplet, le 8255 apparat dans plusieurs plages dadresses selon les valeurs des bits dadresses non dcods (A7 - A13 et A12 - A15). Dans cet exemple, ladresse de base 300H correspond la premire adresse possible (bits dadresses non dcods tous gaux 0).

    Remarque : si on veut que le 8255 possde des adresses conscutives (par exemple 300H, 301H,

    302H et 303H), on peut utiliser le schma suivant qui exploite tout le bus de donnes (D0 - D15) du

    8086 :

    Exemple de programmation : soit le montage suivant :

    On veut que la Led sallume lorsquon a la combinaison : K0 = 1 et K1 = 0 et K2 = 1. Programme :

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 37

    V. Linterface srie 8250 : Une interface srie permet dchanger des donnes entre le microprocesseur et un

    priphrique bit par bit.

    Avantage : diminution du nombre de connexions (1 fil pour lmission, 1 fil pour la rception). Inconvnient : vitesse de transmission plus faible que pour une interface parallle.

    Il existe deux types de transmissions sries :

    Asynchrone : chaque octet peut tre mis ou reu sans dure dtermine entre un octet et le suivant ;

    Synchrone : les octets successifs sont transmis par blocs spars par des octets de synchronisation.

    La transmission asynchrone la plus utilise est celle qui est dfinie par la norme RS232.

    Exemple : transmission du caractre E (code ASCII 45H = 01000101B) sous forme srie selon la norme RS232 :

    Ltat 1 correspond une tension ngative comprise entre 9 et 15 V, ltat 0 une tension

    positive comprise entre +9 et +15 V. Au repos, la ligne est ltat 1 (tension ngative) ; Le bit de start marque le dbut de la transmission du caractre ; Les bits de donnes sont transmis lun aprs lautre en commenant par le bit de poids

    faible. Ils peuvent tre au nombre de 5, 6, 7 ou 8. Chaque bit est maintenu sur la ligne

    pendant une dure dtermine T. Linverse de cette dure dfinit la frquence de bit = nombre de bits par secondes = vitesse de transmission. Les vitesses normalises sont : 50,

    75, 110, 134.5, 150, 300, 600, 1200, 2400, 4800, 9600 bits/s ;

    Le bit de parit (facultatif) est un bit supplmentaire dont la valeur dpend du nombre de bits de donnes gaux 1. Il est utilis pour la dtection derreurs de transmission ;

    Les bits de stop (1, 1.5 ou 2) marquent la fin de la transmission du caractre. V.1. Principe dune interface srie :

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 38

    Un circuit intgr dinterface srie asynchrone sappelle un UART : Universal Asynchronous Receiver Transmitter) ; une interface srie synchrone/asynchrone est un USART.

    V.2. Exemples dinterfaces sries : 8251 (Intel) ; 8250 (National Semiconductor) ; 6850 (Motorola). Connexion de deux quipements par une liaison srie RS232 : les quipements qui peuvent

    tre connects travers une liaison srie RS232 sont de deux types :

    Les quipements terminaux de donnes (DTE : Data Terminal Equipment) qui gnrent les donnes transmettre, exemple : un ordinateur ;

    Les quipements de communication de donnes (DCE : Data Communication Equipment) qui transmettent les donnes sur les lignes de communication, exemple : un modem.

    Pour connecter ces quipements, on utilise des connecteurs normaliss DB9 ou DB25 :

    Diffrents signaux sont transports par ces connecteurs :

    Seuls les 2 signaux TxD et RxD servent transmettre les donnes. Les autres signaux sont

    des signaux de contrle de lchange de donnes. V.3. Connexion entre DTE et DCE :

    Dialogue entre DTE et DCE :

    (les signaux de contrle sont actifs ltat bas = tension positive)

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 39

    Quand le DTE veut transmettre des donnes, il active le signal DTR. Si le DCE est prt recevoir les donnes, il active le signal DSR puis le signal DCD : la communication peut

    dbuter ;

    Lorsque le DTE a une donne mettre, il active le signal RTS. Si le DCE peut recevoir la donne, il active CTS : le DTE envoie la donne sur la ligne TxD;

    Si le DCE veut demander une pause dans la transmission, il dsactive CTS : le DTE arrte la transmission jusqu ce que CTS soit ractiv. Cest un contrle matriel du flux de donnes;

    Lorsque la transmission est termine, les signaux RTS, CTS, DTR, DCD et DSR sont successivement dsactivs.

    V.4. Applications des liaisons sries :

    Transmission de donnes travers une ligne tlphonique :

    Le modem transforme les signaux numriques produits par linterface srie en signaux analogiques accepts par la ligne tlphonique et inversement (modulations numriques FSK, PSK, ...)

    Liaison srie directe entre deux DTE : Liaison simple 3 fils : rebouclage (strapping) des signaux de contrle :

    Ce cblage ne permet pas le contrle matriel du flux entre les deux DTE.

    Liaison complte : cble Null Modem :

    Ce cblage simule la prsence dun modem (DCE) en croisant les signaux de contrle et permet le contrle matriel du flux.

    V.5. Mise en oeuvre dune interface srie, lUART 8250 :

    Brochage du 8250 :

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 40

    Schma fonctionnel :

    Accs aux registres du 8250 : le 8250 possde 11 registres. Comme il ny a que 3 bits dadresses (A0, A1 et A2), plusieurs registres doivent se partager la mme adresse :

    En fonction de ltat de DLAB (Divisor Latch Access Bit = bit de poids fort du registre LCR), on a accs soit au registre dmission/rception, soit au diviseur dhorloge, soit au masque dinterruptions. Structure des registres :

    Line Control Register (LCR) : bits 0 et 1 : longueur du mot transmis,

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 41

    bit 2 : nombre de bits de stop, 0 1 bit de stop, 1 1.5 bits de stop si 5 bits sont

    transmis, 2 bits de stop sinon ;

    bit 3 : autorisation de parit, 0 pas de parit, 1 parit gnre et vrifie ;

    bit 4 : slection de parit, 0 parit impaire, 1 parit paire;

    bit 5 : forage de parit, 0 parit non force 1 parit fixe;

    bit 6 : contrle de ltat de la ligne TxD, 0 ligne en fonctionnement normal, 1 forage de TxD ltat 0 (break) ;

    bit 7 : DLAB (Divisor Latch Access bit), 0 accs aux registres dmission, de rception et IER,

    1 accs au diviseur dhorloge. Line Status Register (LSR) :

    bit 0 : 1 donne reue ; bit 1 : 1 erreur dcrasement de caractre ; bit 2 : 1 erreur de parit ; bit 3 : 1 erreur de cadrage (bit de stop non valide) ; bit 4 : 1 dtection dun tat logique 0 sur RxD pendant

    une dure suprieure la dure dun mot ; bit 5 : 1 registre de transmission vide ; bit 6 : 1 registre dcalage vide ; bit 7 : non utilis, toujours 0.

    Modem Control Register (MCR) :

    Modem Status Register (MSR) :

    Diviseur dhorloge (DLM,DLL) : la vitesse de transmission est fixe par la valeur du

    diviseur dhorloge :

    Exemple de calcul : vitesse de transmission dsire = 1200 bit/s, frquence dhorloge =

    1.8432 MHz, dtermination de la valeur du diviseur dhorloge :

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 42

    Receiver Buffer Register (RBR) : contient la donne reue. Transmitter Holding Register (THR) : contient la donne transmettre. Interrupt Identification Register (IIR) :

    Interrupt Enable Register (IER) : autorisation des interruptions

    Scratch Register (SCR) : registre usage gnral pouvant contenir des donnes

    temporaires.

    Exemple de programmation : soit un UART 8250 dont le bus de donnes est connect sur la

    partie faible du bus de donnes du microprocesseur 8086. Ladresse de base du 8250 est fixe la valeur 200H par un dcodeur dadresses. La frquence dhorloge du 8250 est de 1.8432 MHz. On veut :

    Ecrire une procdure init qui initialise le 8250 avec les paramtres suivants : 2400 bits/s, 8 bits par caractre, parit paire, 1 bit de stop (2400, 8, P, 1) ;

    Ecrire une procdure envoi qui met un message contenu dans la zone de donnes msg. Lmission sarrte lorsque le caractre EOT (End Of Text, code ASCII = 03H) est rencontr ;

    Ecrire une procdure rception qui reoit une ligne de 80 caractres et la range dans une zone de donnes appele ligne. En cas derreur de rception, envoyer le caractre NAK (No Acknowledge, code ASCII = 15H) sinon envoyer le caractre ACK (Acknowledge,

    code ASCII = 06H).

    Programme :

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 43

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 44

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 45

    Chapitre V : Les interruptions

    I. Dfinition dune interruption : Soit un microprocesseur qui doit changer des informations avec un priphrique :

    Il y a deux mthodes possibles pour recevoir les donnes provenant des priphriques :

    Scrutation priodique (ou polling) : le programme principal contient des instructions qui lisent cycliquement ltat des ports dE/S.

    Avantage : facilit de programmation.

    Inconvnients :

    perte de temps sil y a de nombreux priphriques interroger ; de nouvelles donnes ne sont pas toujours prsentes ; des donnes peuvent tre perdues si elles changent rapidement.

    Interruption : lorsquune donne apparat sur un priphrique, le circuit dE/S le signale au microprocesseur pour que celui-ci effectue la lecture de la donne : cest une demande dinterruption (IRQ : Interrupt Request) :

    Avantage : le microprocesseur effectue une lecture des ports dE/S seulement lorsquune donne est disponible, ce qui permet de gagner du temps et dviter de perdre des donnes. Exemples de priphriques utilisant les interruptions :

    Clavier : demande dinterruption lorsquune touche est enfonce ; Port srie : demande dinterruption lors de larrive dun caractre sur la ligne de

    transmission.

    Remarque : les interruptions peuvent tre gnres par le microprocesseur lui-mme en cas de

    problmes tels quune erreur dalimentation, une division par zro ou un circuit mmoire dfectueux (erreurs fatales). Dans ce cas, la demande dinterruption conduit larrt du microprocesseur.

    II. Prise en charge dune interruption par le microprocesseur : A la suite dune demande dinterruption par un priphrique : Le microprocesseur termine lexcution de linstruction en cours ; Il range le contenu des principaux registres sur la pile de sauvegarde : pointeur dinstruction,

    flags, ...

    Il met un accus de rception de demande dinterruption (Interrupt Acknowledge) indiquant au circuit dE/S que la demande dinterruption est accepte :

    Remarque : le microprocesseur peut refuser la demande dinterruption : celle-ci est alors masque. Le masquage dune interruption se fait gnralement en positionnant un flag dans

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 46

    le registre des indicateurs dtat. Il existe cependant des interruptions non masquables qui sont toujours prises en compte par le microprocesseur.

    Il abandonne lexcution du programme en cours et va excuter un sous-programme de service de linterruption (ISR : Interrupt Service Routine) ;

    Aprs lexcution de lISR, les registres sont restaurs partir de la pile et le microprocesseur reprend lexcution du programme quil avait abandonn :

    Remarque : la dernire instruction dun sous-programme de service dinterruption doit tre linstruction IRET : retour dinterruption. Si plusieurs interruptions peuvent se produire en mme temps, on doit leur affecter une

    priorit pour que le microprocesseur sache dans quel ordre il doit servir chacune dentre elle. III. Adresses des sous-programmes dinterruptions :

    Lorsquune interruption survient, le microprocesseur a besoin de connatre ladresse du sous-programme de service de cette interruption. Pour cela, la source dinterruption place sur le bus de donnes un code numrique indiquant la nature de linterruption. Le microprocesseur utilise ce code pour rechercher dans une table en mmoire centrale ladresse du sous-programme dinterruption excuter. Chaque lment de cette table sappelle un vecteur dinterruption :

    Lorsque les adresses des sous-programmes dinterruptions sont gres de cette manire, on

    dit que les interruptions sont vectorises.

    Avantage de la vectorisation des interruptions : lemplacement dune ISR peut tre nimporte o dans la mmoire, il suffit de spcifier le vecteur dinterruption correspondant. IV. Les interruptions du 8086 :

    Le microprocesseur 8086 peut grer jusqu 256 interruptions. Chaque interruption reoit un numro (compris entre 0 et 255) appel type de linterruption.

    Trois sortes dinterruptions sont reconnues par le 8086 : Interruptions matrielles produites par lactivation des lignes INTR et NMI du

    microprocesseur ;

    Interruptions logicielles produites par linstruction INT n, o n est le type de linterruption ;

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 47

    Interruptions processeur gnres par le microprocesseur en cas de dpassement, de division par zro ou lors de lexcution pas pas dun programme. Les interruptions du 8086 sont vectorises. La table des vecteurs dinterruptions doit

    obligatoirement commencer ladresse physique 00000H dans la mmoire centrale. Chaque vecteur dinterruption est constitu de 4 octets reprsentant une adresse logique du

    type CS : IP.

    Remarque : correspondance entre le type de linterruption et ladresse du vecteur correspondant : adresse vecteur dinterruption = 4 type de linterruption

    Exemple : interruption 20H, adresse du vecteur = 4 20H = 80H.

    La table des vecteurs dinterruptions est charge par le programme principal (carte microprocesseur) ou par le systme dexploitation (ordinateur) au dmarrage du systme.

    Elle peut tre modifie en cours de fonctionnement (dtournement des vecteurs

    dinterruptions). V. Le contrleur programmable dinterruptions 8259 :

    Le microprocesseur 8086 ne dispose que de deux lignes de demandes dinterruptions matrielles (NMI et INTR). Pour pouvoir connecter plusieurs priphriques utilisant des

    interruptions, on peut utiliser le contrleur programmable dinterruptions 8259 dont le rle est de : Recevoir des demandes dinterruptions des priphriques ; Rsoudre les priorits des interruptions ; Gnrer le signal INTR pour le 8086 ; Emettre le numro de linterruption sur le bus de donnes.

    Un 8259 peut grer jusqu 8 demandes dinterruptions matrielles.

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 48

    Brochage du 8259 Schma fonctionnel :

    Remarque : si le nombre de demandes dinterruptions est suprieur 8, on peut placer plusieurs 8259 en cascade :

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 49

    Chapitre VI : Le Microcontrleur PIC16F84

    I. Introduction :

    Un microcontrleur est une unit de traitement de l'information de type microprocesseur laquelle

    nous ajoutons des priphriques internes permettant de raliser des montages sans ncessiter lajout de composants annexes. Un microcontrleur peut donc fonctionner de faon autonome aprs

    programmation. Un microcontrleur est ralis en technologie CMOS, en le regardant pour la

    premire fois, il fait davantage penser un banal circuit intgr logique TTL ou MOS, plutt qu un microcontrleur.

    Un PIC (Programmable Interface Controler) est un microcontrleur fabriqu par la Socit

    amricaine Arizona MICROCHIP Technology. Les PIC sont drivs du PIC1650 dvelopp

    l'origine par la division microlectronique de General Instrument.

    Un PIC est fourni en botier DIL (Dual In Line) de 2x9 pattes. En dpit de sa petite taille, ils sont

    caractriss par une architecture interne qui lui confre une souplesse et une vitesse incomparables.

    Ses caractristiques principales sont :

    Sparation des mmoires de programme et de donnes (architecture Harvard) : On obtient ainsi une meilleure bande passante et des instructions et des donnes pas forcment codes

    sur le mme nombre de bits.

    Communication avec l'extrieur seulement par des ports : il ne possde pas de bus d'adresses, de bus de donnes et de bus de contrle comme la plupart des microprocesseurs.

    Utilisation d'un jeu d'instructions rduit, d'o le nom de son architecture : RISC (Reduced Instructions Set Construction). Les instructions sont ainsi codes sur un nombre rduit de

    bits, ce qui acclre l'excution (1 cycle machine par instruction sauf pour les sauts qui

    requirent 2 cycles). En revanche, leur nombre limit oblige se restreindre des instructions

    basiques, contrairement aux systmes d'architecture CISC (Complex Instructions Set

    Construction) qui proposent plus d'instructions donc codes sur plus de bits mais ralisant

    des traitements plus complexes.

    Il existe trois familles de PIC :

    - Base-Line : Les instructions sont codes sur 12 bits ; - Mid-Line : Les instructions sont codes sur 14 bits ; - High-End : Les instructions sont codes sur 16 bits.

    Par rapport des systmes lectroniques base de microprocesseurs et autres composants spars,

    les microcontrleurs permettent de diminuer la taille, la consommation lectrique et le cot des

    produits. Ils sont frquemment utiliss dans les systmes embarqus, comme les contrleurs des

    moteurs automobiles, les tlcommandes, les appareils de bureau, l'lectromnager, les jouets, la

    tlphonie mobile, etc.

    II. Le PIC16F84 de Microchip

    Le PIC16F84 est un microcontrleur 8 bits 18 pattes. Le numro 16 signifie qu'il fait partie de la

    famille "MID-RANGE". La lettre F indique que la mmoire programme de ce PIC est de type

    "Flash". Les deux derniers chiffres permettent d'identifier prcisment le PIC, ici c'est un PIC de

    type 84. La rfrence 16F84 peut avoir un suffixe du type "-XX" dans lequel XX reprsente la

    frquence d'horloge maximal que le PIC peut recevoir.

    Remarque : La lettre L indique que le PIC peut fonctionner avec une plage de tension beaucoup

    plus tolrante. La lettre C indique que la mmoire programme est une EPROM ou plus rarement

    une EEPROM et la lettre CR indique une mmoire de type ROM. Notez ce niveau que seule une

    mmoire FLASH ou EEPROM est susceptible dtre efface.

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 50

    Tableau n1: Liste des composants prsents dans la documentation technique n DS30430C du PIC.

    II.1. Dtails des principales caractristiques du PIC16F84

    Les principales caractristiques dun PIC16F84 sont : - 35 instructions (composant RISC) ; - 2Ko de mmoire Flash pour le programme (RAM de 1019 mots de 14 bits pour les

    instructions), cette mmoire allant de ladresse 005 ladresse 3FF ; - 68 octets de RAM (Donnes sur 8 bits) allant de ladresse 0C ladresse 4F) ; - Une mmoire RAM de 2x12 emplacements rserve aux registres spciaux - 64 octets de d'EEprom ; - 1 compteur/timer de 8 bits ; - Une horloge interne, avec pr diviseur et chien de garde (Watch dog) ; - 4 sources d'interruption ; - 13 entres/sorties configurables individuellement, rparties en un port de 5 lignes (Port A) et

    un port de 8 lignes (Port B) ;

    - Mode SLEEP ; - 1 cycle machine par instruction, sauf pour les sauts (2 cycles machine) ; - Vitesse maximum 10 MHz soit une instruction en 400 ns (1 cycle machine = 4 cycles

    d'horloge) ;

    - 1000 cycles d'effacement/criture pour la mmoire flash, 10.000.000 pour la mmoire de donne EEPROM ;

    - Vecteur de Reset situ ladresse 000 ; - Bus dadresses de 13 lignes ; - Alimentation sous 5 Volts.

    En plus des caractristiques suivantes :

    - Architecture interne rvolutionnaire lui confrant une extraordinaire rapidit ; - Possibilit dtre programm in-circuit, cest dire sans quil soit ncessaire de le retirer du

    support de lapplication ;

  • Informatique Industrielle 1 ME17

    Messaoudi K. - 2011/2012 51

    - Un vecteur dinterruption, situ ladresse 004 ; - Prsence dun code de protection permettant den empcher la duplication ; - Facilit de programmation ; - Simplicit ; - Une faible consommation lectrique ; - Faible prix.

    II.2. Brochage du PIC16F84

    Le PIC16F84 est un microcontrleur ralis en technologie CMOS. Les signaux sont compatibles

    TTL.

    VSS et VDD : broches d'alimentation (3 5,5V) ; OSC1 et OSC2 : signaux d'horloges, ces broches peuvent recevoir un circuit RC ou un

    rsonateur ;

    CLKIN : peut tre connecte une horloge externe (0 4, 10 ou 20 MHz) ; MCLR : Reset (Master Clear) ; RA0, ... , RA4 : 5 entres/sorties du port A ; RB0, ... , RB7 : 8 entres/sorties du port B ; T0CKI : Entre d'horloge externe du timer TMR0 ; INT : entre d'interruption externe.

    Remarque1: RA = Register A, RB = Register B.

    Remarque2: A remarquer que RB0 (pin 6) et RA4 (pin 3), outre qu pouvoir servir dentres/sorties, selon la faon dont on les programme peuvent respectivement servir lune comme entre dinterruption et lautre comme entre dhorloge externe pour le pilotage du timer (TMR0). Remarque3: Le 16F84 possde 13 entres/sorties (5 dans le port A et 8 dans le port B). Chaque

    entre/sortie est configurable individuellement (en entre ou bien en sortie). On peut par exemple

    configurer les broches RB0, RA2 et RA3 en entre et les broches RB1, RB2, RB3, RA0 et RA1 en

    sortie. Le choix de la configuration des entres/sorties non utilises n'a videmment aucune

    importance. Notez le cas particulier de la broche RA4 configure en sortie. Cette broche possde

    une sortie de type drain ouvert. Cela veut dire qu'elle ne peut pas fournir de courant. Par contre, elle

    peut en consommer :

    II.3. Vitesse des PIC

    Tous les PIC Mid-Range ont un jeu de 35 instructions, stockent chaque instruction dans un seul mot

    de programme, et excutent chaque instruction (sauf les sauts) en 1 cycle. On atteint donc des trs

    grandes vitesses, et les instructions sont