Initiale
ENITE
FILIERE : Ingnierie informatique
1re anne
11
Mars
(1/3)
I/O s Connecteur s PCI
Connecteur AGP
3/19/13
22
(2/3)
3/19/13
33
Diagramme
(3/3)
3/19/13
44
Modle en couches
Architecture des ordinateurs
6 Programmes d'application
(Traitement de texte, PAO, Jeux, ) (Fortran, Cobol, C, C++, Java, ) (Langage natif symbolique de la machine) (Gestion des taches, des ressources : mmoire, I/Os,) (Langage natif du processeur)
3/19/13
Historique :
les thoriciens
Antiquit : Aristote fonde les bases de la Logique 1675 : 1854 : base Leibnitz invente le systme binaire moderne (0 et 1) Boole publie The Mathematical Analysis of Logic qui dcrit un systme de logique symbolique la des machines modernes: lalgbre de Boole.
1936 : Turing dfinit la machine qui porte son nom 1938 : Shannon fait la synthse entre lalgbre de Boole et les circuits lectriques. 1945 : Von Neumann dfinit larchitecture des ordinateurs modernes 1948 : Shannon pose les bases de la thorie de linformation. 66
3/19/13
Historique :
les ralisations
Schickard conoit la premire machine calculer Pascal ralise la Pascaline (addition, soustraction) Leibniz : ajoute la multiplication et la division Falcon : commande pour mtiers tisser
1805 : Jacquard : programmation par cartons perfores articuls 1840 : 1884 : Babbage : Machine analytique Hollerith : tabulatrice cartes perfores
1945 : Von Neumann dfinit larchitecture de lordinateur universel 1949 : Wilkes ralise Cambridge le premier ordinateur : l EDSAC (Electronic Delay Storage Automatic Calculator) 77
3/19/13
Historique :
1890 : Carte perfore (Hermann Hollerith) 1904 : Tube vide : diode (John Fleming) triode 1947 : Transistors (Schockley, Brattain, Bardein) 1950 : Mmoires Tores (Papian) 1958 : Circuits intgrs (Killy)
3/19/13
88
Historique :
lvolution technologique
Gnration 0 Gnration 1 Gnration 2 Gnration 3
< 1900
: Calcul mcanique
1946-1957 : Tubes vide 1958-1964 : Transistors et circuits discrets 1965: SSI (Small Scale Integration) jusqu 100 circuits par puce
-1970 : MSI (Medium Scale Integration) de 100 3000 circuits par puce 1971-1977 : LSI (Large Scale Integration) de 3000 100 000 circuits par puce 1978-2002 : VLSI (Very Large Scale Integration) 4 de 105 108 circuits par puce Demain : ULSI (Ultra Large Scale Integration) > 108 circuits par puce 99 Gnration
3/19/13
Historique :
Loi de Moore
(1/2)
(Cofondateur dIntel)
Le cot dune puce reste pratiquement constant. Laugmentation de la densit des circuits saccompagne:
dune augmentation de performance, dune rduction de la consommation lectrique, Dune augmentation de la fiabilit.
3/19/13
1010
Historique :
Loi de Moore
(2/2)
(source : http://www.intel.com/research/silicon/mooreslaw.htm )
3/19/13
1111
Historique :
Date 1971 1972 1974 1978 1982 1985 1989 1994 1995 1997 1999 2000 2002 Pentium IV Processeur 4004 8008 8080 8086 80286 80386 80486 Pentium Pentium Pro Pentium II Pentium III Nb Transistors 2 300 6 000 4,500 29 000 134 000 275 000 1 200 000 3 100 000 5 500 000 7 500 000 9 500 000 42 000 000 55 000 000 Srigraphie
(source : http://www.intel.com/research/silicon/mooreslaw.htm )
3/19/13
Architecture des
1212
Historique :
la premire machine
Additions et soustraction de nombres dcimaux
Machine ouverte
3/19/13
Architecture des
1313
Historique :
1945
Cblage du programme
3/19/13
1414
Historique :
3/19/13
Architecture des
1515
Historique :
Apple iMac
HP omnibook 510
3/19/13
Architecture des
1616
Historique :
64 bits Architecture
3/19/13
Architecture des
1717
Les premires machines calculer taient purement mcaniques : bouliers, abaques, ... (antiquit). Premire vraie machine calculer : Pascal, 1642, machine additionner. Machine multiplier : Leibniz, 1694, 1818
3/19/13
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).
3/19/13
1919
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.
3/19/13 2020
Micro-ordinateurs : 1969-70, utilisation des circuits intgrs LSI. Premier microprocesseur : Intel, 1971, microprocesseur 4004, puis 8008, premier micro-ordinateur : le Micral, 1973, France, puis lAltair, 1975, Etats-Unis.
3/19/13 2121
Ordinateurs de plus en plus puissants, bass sur des microprocesseurs performants : Pentium, Power PC, ... Nouvelles architectures de microprocesseurs : RISC. Applications multimdia, rseaux, ... 2222
3/19/13
3/19/13
2323
Llment de base dun calculateur est constitu par lunit centrale de traitement (UCT) Ou CPU : Central Processing Unit). La CPU est constitue :
3/19/13
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 de2525 donnes
3/19/13
La mmoire peut tre vue comme un ensemble de cellules ou cases contenant chacune une information :
une 3/19/13 instruction
2626
La ralisation matrielle des ordinateurs est gnralement base sur larchitecture de Von Neumann:
Priph ri ques
3/19/13
2727
Le P change des informations avec la mmoire et lunit dE/S, sous forme de mots binaires, au moyen dun ensemble de connexions appel bus. 3/19/13 2828
Priph riques
Le bus
le bus dadresses permet au P de spcifier ladresse de la case mmoire lire ou crire; le bus de donnes permet les transferts entre le P 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.
2929
3/19/13
3/19/13
3030
Un P 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 3131
3/19/13
schma fonctionnel :
3/19/13
3232
Un P excute un programme qui est une suite dinstructions stockes dans la mmoire. Une instruction peut tre code sur un ou plusieurs octets.
3/19/13
3333
Rangement en mmoire:
3/19/13
3434
Pour excuter les instructions dans lordre tabli par le programme, le microprocesseur doit savoir chaque instant ladresse de la prochaine instruction excuter.
Exempl e:
Ce registre est appel pointeur dinstruction (IP : Instruction Pointer) ou compteur 3/19/13 dinstructions ou
3535
Remarques :
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 P . Des signaux de commande pour lUAL sont produits en fonction de lopration demande qui est alors excute.
3/19/13
3636
Les registres
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 :
3/19/13
3737
Les registres
A la suite de chaque instruction, un registre du P est actualis en fonction du dernier rsultat : cest le registre dtat du P .
Chacun des bits du registre dtat est un indicateur dtat ou flag (drapeau).
3/19/13
3838
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 1lorsque le rsultat dune addition possde une retenue, le flag AC: Auxiliary Carry signaleune retenue entre groupes de 4 bits(Half-byte : demi-octet) d'une quantit de 8 bits.
3/19/13
3939
Toutes ces tapes (lecture de linstruction, dcodage, excution) sont synchronises par un squenceur qui assure le bon droulement des oprations :
3/19/13
4040
Pour excuter le programme contenu dans la RAM, le squenceur du P excute lui-mme un programme appel micro-code, contenu dans une ROM lintrieur du P .
Le squenceur est dirig par une horloge qui dlivre un signal de frquence donne permettant denchaner les diffrentes tapes de lexcution dune instruction :
3/19/13
4141
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 P .
3/19/13 4242
Structure complte dun microprocesseur simple : pour fonctionner, un microprocesseur ncessite donc au minimum les lments suivants :
3/19/13
4343
Elles perdent leur contenu en cas de coupure dalimentation. Elles stockent temporairement les donnes et les programmes. Elles peuvent tre lues et crites par le microprocesseur;
Conservent leur contenu en cas de coupure dalimentation. Ne peuvent tre que lues par le microprocesseur. Stockent les donnes et les programmes de manire dfinitive.
3/19/13
4545
L'adressage 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), ...
Exemple (consulter) : mmoire RAM 6264, capacit= 8K 8 bits : 13 broches dadresses A0 A12, 213 = 8192 = 8 Ko.
4646
3/19/13
3/19/13
4747
Reprsentation condense :
3/19/13
4848
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.
3/19/13
3/19/13
5050
Remarque :
Si le temps daccs dune mmoire est suprieur une priode dhorloge (mmoire lente), le microprocesseur peut accorder la mmoire un temps supplmentaire (une ou plusieurs priodes dhorloge), la demande de celle-ci.
3/19/13
5151
3/19/13
5252
Connexion de plusieurs botiers mmoire sur le bus dun microprocesseur Les botiers mmoire possdent une broche note CS (Chip Select).
Si CS=0 le circuit peut tre lu ou crit. Si CS=1 le circuit est exclu du service :
ses broches de donnes D0 D7 passent ltat de haute impdance tout se passe comme si la mmoire tait dconnecte du bus de donnes du microprocesseur,
5353
3/19/13
Exemple : connexion de trois botiers mmoire dune capacit de 8 Ko chacun (13 lignes dadresses) sur un bus dadresse de 16 bits :
3/19/13
5454
3/19/13
5555
Mapping mmoire
3/19/13
5656
Les trois bits A13, A14 et A15 utiliss prcdemment fournissent en fait 8 combinaisons, de 000 111, do la possibilit de connecter jusqu 8 botiers mmoire de 8 Ko sur le bus. La mmoire totale implante devient donc de 8 8 Ko = 64 Ko : valeur maximale possible avec 16 bits dadresses. Pour cela, il faut utiliser un circuit de 3/19/13 dcodage
5757
3/19/13
5959
Jusqu' la fin des annes 70, on utilisait des mmoires tore magntique, lentes de faibles capacits. Actuellement, on utilise des mmoires semi-conducteurs.
3/19/13
6060
Mmoires mortes:
q
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 3/19/13 programmation (21 ou 25 V) pendant 20 ms. 6161
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 : 3/19/13 paramtres de configuration des ordinateurs.6262
Mmoires vives :
q
SRAM: Static Random Access Memory. Mmoire statique accs alatoire, base de bascules semiconducteurs 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.
3/19/13
6363
Largeur de bus:
Le microprocesseur Intel 8086 est un microprocesseur 16 bits.
Date:
apparu en 1978. Cest le premier microprocesseur de la famille Intel 80x86 (8086, 80186, 80286, 80386, 80486, Pentium, ...).
Brochage:
Il se prsente sous la forme dun botier DIP (Dual In-line 3/19/13 6464 Package) 40 broches
3/19/13
6565
Schma fonctionnel
3/19/13
6666
CLK : entre du signal dhorloge qui cadence le fonctionnement du microprocesseur. Ce signal provient dun gnrateur dhorloge : le 8284.
RESET : entre de remise zro du microprocesseur. Lorsque cette entre est mise ltat haut pendant au moins 4 3/19/13 6767il va priodes dhorloge, le microprocesseur est rinitialis:
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, ...) ; 3/19/13 6868
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 6969
3/19/13
3/19/13
7070
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.
3/19/13
7171
3/19/13
7272
3/19/13
7373
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). 3/19/13 7474
3/19/13
7575
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.
3/19/13
7676
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).
3/19/13 7777
3/19/13
7878
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 1 1 0 1 0 1 les deux octets (mot complet) octet fort ( adresse impaire) Octet faible (adresse paire) aucun octet
Remaque: Le 8086 ne peut lire une donne sur 16 bits en une 3/19/13 7979 seule fois uniquement si l'octet de poids fort de cette donne est
3/19/13
8080
3/19/13
8181
L'unit d'excution ( EU : Execution Unit); L'unit d'interface de bus (BIU: Bus Interface Unit)
3/19/13
8282
3/19/13
8383
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).
3/19/13 8484
Ils peuvent tre galement considrs comme 8 registres sur 8 3/19/13 8585
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.
8686
3/19/13
CF : indicateur de retenue (carry); PF : indicateur de parit; AF : indicateur de retenue auxiliaire; ZF : indicateur de zro; 8787
CS : Code Segment, registre de segment de code; DS : Data Segment, registre de segment de donnes; SS : Stack Segment, registre de segment de pile;
Lespace mmoire adressable par le 8086 est de 220 = 1 Mo 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.
3/19/13 8989
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.
9090
3/19/13
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.
3/19/13
9191
9292
93 93
3/19/13
94 94
Exemple :
DS : SI, ES : DI.
Le registre de segment de
SS : SP
3/19/13
3/19/13
9595
3/19/13
9696
3/19/13
9797
Gnralits:
Chaque P reconnait un ensemble dinstructions appel jeu dinstructions (Instruction Set) fix par le constructeur.
Pour les P classiques, le nombre dinstructions reconnues varie entre 75 et 150 (microprocesseurs CISC : Complex Instruction Set Computer).
Il existe aussi des P 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.
3/19/13
9898
instructions de transfert de donnes ; instructions arithmtiques ; instructions logiques ; instructions de branchement ...
3/19/13
9999
Elles permettent de dplacer des donnes dune source vers une destination :
Remarque :
le 3/19/13
Syntaxe :
MOV destination,source Il existe diffrentes faons de spcifier ladresse dune case mmoire dans une instruction : ce sont les modes dadressage.
3/19/13
Exemples de modes
101101
mov bl,[1200H] : transfre le contenu de la case mmoire dadresse effective (offset) 1200H vers le registre BL. Linstruction 3/19/13 comporte
102102
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.
3/19/13
103103
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 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.
3/19/13
104104
Remarque : les microprocesseurs Intel rangent loctet de poids faible dune donne sur plusieurs octets ladresse la plus basse (format Little Endian). Modes dadressage volus : adressage bas : loffset est contenu dans un registre de base BX ou BP.
3/19/13
105105
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 ; mov [di],bx : charge les cases mmoire doffset DI et DI + 1 avec le contenu du registre BX.
3/19/13 106106
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
3/19/13
107107
Les modes dadressage bass ou indexs permettent la manipulation de tableaux rangs en mmoire. Exemple :
mov si,0 mov word ptr table[si],1234H 3/19/13
108108
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]
Les instructions arithmtiques de base sont laddition, la soustraction, la multiplication et la division. Plusieurs modes dadressage sont possibles. Addition :
3/19/13
Soustraction : SUB oprande1,oprande2 Lopration effectue est : oprande1 oprande1 oprande2. Multiplication :
MUL oprande, o oprande est 3/19/13 111111 un registre ou une case mmoire.
Exemples :
mov al,51 mov bl,32 mul bl AX = 51 32
mov al,43 mov byte ptr [1200H],28 mul byte ptr [1200H]
3/19/13
112112
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.
3/19/13 113113
ADC : addition avec retenue ; SBB : soustraction avec retenue ; INC : incrmentation dune unit ; DEC : dcrmentation dune unit ; IMUL : multiplication signe ; IDIV : division signe.
3/19/13
114114
Ce sont des instructions qui permettent de manipuler des donnes au niveau des bits. Les oprations logiques de base sont :
3/19/13
3/19/13
116116
OU logique : OR oprande1,oprande2 Lopration effectue est : oprande1 oprande1 OU oprande2. Application : mise `a 1 dun ou plusieurs bits dans un mot. Exemple : dans le mot 10110001B on veut mettre 1 les bits 1 et 3 sans modifier les autres bits.
Les instructions correspondantes peuvent scrire : mov ah,10110001B or ah,00001010B
3/19/13
117117
3/19/13
118118
OU exclusif : XOR oprande1,oprande2 Lopration effectue est : oprande1 oprande1 oprande2. Exemple : mise zro dun registre : mov al,25 xor al,al AL = 0
3/19/13
119119
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 3/19/13 120120 zros.
Dcalage logique vers la droite (Shift Right) : SHR oprande,n Cette instruction dcale loprande de n positions vers la droite.
entre dun 0 la place du bit de poids fort ; le bit sortant passe travers lindicateur de retenue CF. 3/19/13
121121
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
3/19/13 122122
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
Dcalage arithmtique vers la gauche : SAL oprande,n 3/19/13 123123 Identique au dcalage logique vers la gauche.
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 AL = mov cl,4 shr al,cl
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
3/19/13
ou
mov cl,3
124124
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
3/19/13
125125
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.
3/19/13 126126
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.
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.
3/19/13 128128
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.
3/19/13 129129
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 :
3/19/13
130130
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 :
Exemple :
3/19/13 131131
Instructions de sauts conditionnels : Jcondition label Un saut conditionnel nest excut que si une certaine condition est satisfaite, sinon lexcution se poursuit squentiellement linstruction suivante.
3/19/13
132132
nom La condition du saut porte instructio n sur ltat de lun (ou plusieurs) des indicateurs JZ label Jump if Zero dtat (flags) du microprocesseur : JNZ label Jump if Not Zero JE label JNE label JC label JNC label JS label 3/19/13 JNS label Jump if Equal
Jump if Not Carry saut si CF = 0 Jump if Sign saut si SF = 1 133133 Jump if Not Sign saut si SF =
3/19/13
134134
Remarque :
il existe un autre type de saut conditionnel, les sauts arithmtiques. Ils suivent en gnral linstruction de comparaison :
condition = > < nombres nombres non CMP oprande1,oprande2 signs signs JEQ label JG label JL label JNE label JEQ label JA label JB label JNE label
Exemple: 3/19/13
135135
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 :
3/19/13
136136
Appel de sous-programmes : pour viter la rptition dune mme squence dinstructions on rdige la squence une seule fois en lui attribuant un nom et on lappelle lorsquon en a besoin. Le programme appelant est le programme principal. La squence appele est un sous-programme ou procdure. Ecriture dun sous-programme :
3/19/13
137137
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 : ss_prog1 ss_prog2 PROC NEAR PROC FAR
3/19/13
138138
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-`a-dire que IP doit tre recharg avec ladresse de cette instruction.
3/19/13
139139
Avant de charger IP avec ladresse du sous-programme, ladresse de retour au programme principal, cest-`a-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,
140140 ainsi le programme appelant peut se
3/19/13
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.
3/19/13
141141
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 dun 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.
3/19/13
142142
La pile peut galement servir sauvegarder le contenu de registres qui ne sont pas automatiquement sauvegards lors de lappel dun sous programme : instruction dempilage : PUSH oprande instruction de dpilage : POP oprande
3/19/13
143143
Remarque : la valeur de SP doit tre initialise par le programme principal avant de pouvoir utiliser la pile. Utilisation de la pile pour le passage de paramtres : pour transmettre des paramtres une procdure, on peut les placer 3/19/13 144144 sur la pile avant lappel de la
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 :
3/19/13
145145
5.6 Mthodes de programmation Etapes de la ralisation dun programme : Dfinir le problme `a rsoudre : que faut-il faire exactement ? Dterminer des algorithmes, des organigrammes : comment faire ? Par quoi commencer,
3/19/13
puis poursuivre ?
146146
Ralisation pratique dun programme : Rdaction du code source en assembleur `a laide dun diteur (logiciel de traitement de texte ASCII) : edit sous MS-DOS, notepad (bloc-note) sous Windows,
147147 Assemblage du code source
3/19/13
Structure dun fichier source en assembleur : pour faciliter la lisibilit du code source en assembleur, on le rdige sous la forme suivante : labels instructions commentaires label1 : mov ax,60H ; ceci est un commentaire ...
3/19/13
...
148148
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 :
3/19/13 149149
6.1 Dfinitions
Une interface dentres/sorties est un circuit intgrpermettant au microprocesseur de communiquer avec lenvironnement extrieur (priphriques) : clavier, cran, imprimante, modem, disques, processus industriel, ... Les interfaces dE/S sont connectes 3/19/13 150150 au microprocesseur travers les bus
3/19/13
151151
3/19/13
152152
3/19/13
adressage indpendant : le microprocesseur considre deux espaces distincts : lespace dadressage des mmoires ; lespace dadressage des ports dE/S. Cest le cas du microprocesseur 8086 :
154154
3/19/13
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 3/19/13 155155 dinstructions spcifiques;
6.3 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 :
3/19/13
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. Lecture dun port dE/S :
si ladresse du port dE/S est sur un octet : I N AL, adr esse : lecture dun port sur 8 bits; I N AX, adr esse : lecture dun port sur 16 bits. si ladresse du port dE/S est sur deux octets : I N AL, DX : lecture dun port sur 8 bits; I N AX, D X : lecture dun port sur 16 157157 bits.
3/19/13
si ladresse du port dE/S est sur deux octets : I N AX, D X : lecture dun port sur 16 bits.
AL, DX
Exemples :
3/19/13
lecture dun port dE/S sur 8 bits ladresse 300H :
158158
6.4 L interface 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 recus simultanment. Le 8255 est une interface parallle programmable : elle peut tre configure en entre et/ou en sortie par programme.
3/19/13
159159
3/19/13
160160
Schma fonctionnel :
3/19/13
161161
Accs aux registres du 8255 : les lignes dadresses A0 et A1 dfinissent les adresses des registres du A1 8255 : WR CS A0 RD operation
0 0 1 0 0 1 1 X 1 3/19/13 X 0 1 0 0 1 0 1 X 1 X 0 0 0 1 1 1 1 X 0 1 1 1 1 0 0 0 0 X 1 1 0 0 0 0 0 0 0 1 0 0 lecture du port A lecture du port B lecture du port C criture du port A criture du port B criture du port C criture du registre de commande pas de transaction illgal pas de transaction 162162
Remarque : le registre de commande est accessible uniquement en criture, la lecture de ce registre nest pas autorise. 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. 3/19/13 163163
3/19/13
164164
Connexion du 8255 sur les bus du 8086 : le bus de donnees du 8255 est sur 8 bits alors que celui du microprocesseur 8086 est sur 16 bits. On peut donc connecter le bus de donnees du 8255 sur les lignes de donnees de poids faible du 8086 (D0 - D7) ou sur celles
3/19/13
165165
Ainsi lun de ces deux signaux A0 ou BHE doit etre utilise pour selectionner le 8255 :
3/19/13
166166
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) :
3/19/13
167167
. . . 3/19/13 168168
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 :
3/19/13
169169
3/19/13
170170
3/19/13
171171
controle equ 306H mov dx,controle ; initialisation du port A en entre mov al,90H ; et du port B en sortie (mode 0) :
out dx,al ; controle = 10010000B = 90H boucle : mov dx,portA in al,dx ; lecture du port A
and al,00000111B ; masquage PA0, PA1 et PA2 cmp al,00000101B ; test PA0 = 1, PA1 = 0 et PA2 = 1 jne faux ; non -> aller au label faux ... mov al,00000001B ; oui -> mettre PB0 a` 1
3/19/13
172172
Une interface srie permet dchanger des donnes entre le microprocesseur et un priphrique bit par bit.
3/19/13
173173
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.
174174
3/19/13
Exemple : transmission du caractre E (code ASCII 45H = 01000101B) sous forme srie selon la norme RS232 :
3/19/13
175175
letat 1 correspond une tension ngative comprise entre 9 et 15 V, ltat 0 `a une tension positive comprise entre +9 et +15 V. Au repos, la ligne est `a letat 1 (tension negative) ; le bit de start marque le debut 3/19/13 176176 de la transmission du
3/19/13
177177
Un circuit integre dinterface serie asynchrone sappelle un UART : Universal Asynchronous Receiver Transmitter) ; une interface serie synchrone/asynchrone est un USART. Exemples dinterfaces series : 8251 (Intel) ;
3/19/13
Pour connecter ces equipements, on utilise des connecteurs normalises DB9 ou DB25 :
3/19/13
179179
Diffrents signaux sont transports par ces connecteurs : signal no broche no broche description sens
DB9 TxD RxD RTS CTS DTR DSR DCD RI GND 3 2 7 8 4 6 1 9 5 DB25 2 3 4 5 20 6 8 22 7 Transmit Data Receive Data Request To Send Clear To Send Data Terminal Ready Data Set Ready Data Carrier Detect Ring Indicator Ground DTE sortie entre sortie entre sortie entre entre entre DCE entre sortie entre sortie entre sortie sortie sortie
Seuls 3/19/13
A suivre
3/19/13
181181
Annexe
Jeu dinstructions Cliquez pour modifier du le 8086 style des sous-titres du masque
3/19/13
182182
Transfert de donnees :
M OV PU SH PO P XC H G XLAT ou XLATB I N O UT LEA LD S LES LAH F SAH F PU SH F PO PF General Dplacement dun octet ou dun mot Ecriture dun mot au sommet de la pile Lecture dun mot au sommet de la pile Echange doctets ou de mots Traduction dun octet a` laide dune table
Entrees/Sorties Lecture dun port dE/S Ecriture dun port dE/S Transfert dadresses Chargement dune adresse effective Chargement dun pointeur utilisant DS Chargement dun pointeur utilisant ES Transfert des flags Transfert des 5 flags bas dans AH Transfert de AH dans les 5 flags bas Sauvegarde des flags sur la pile Restauration des flags a` partir de la pile
3/19/13
183183
3/19/13
184184
Instructions logiques :
Logique Complment a` 1 dun octet ou dun mot NO T ET logique de deux octets ou de deux mots AN D OU logique de deux octets ou de deux mots OR OU exclusif logique de deux octets ou de deux mots XO R Comparaison, a` laide dun ET, doctets ou de mots TEST Dcalages SH L/ SAL Dcalage a` gauche arithmtique ou logique (octet ou mot) SH R SAR RO L RO R RC L RC R Dcalage logique a` droite dun octet ou dun mot Dcalage arithmtique a` droite dun octet ou dun mot Rotations Rotation a` gauche dun octet ou dun mot) Rotation a` droite dun octet ou dun mot Rotation a` gauche incluant CF (octet ou mot) Rotation a` droite incluant CF (octet ou mot)
3/19/13
185185
REP REPE ou REPZ REPN E ou REPN Z M O VS ou M O VSB/ MO VSW CM PS ou CM PSB/ CM PSW SCAS ou SCASB/ SCA SW LO D S ou LO D SB/ LO D SW STO S ou STO SB/ STO SW
3/19/13
186186
Instructions de branchements :
CALL RET J MP LO O P LO O PE ou LO O PZ LO O PN E ou LO O PN Z J CXZ I NT I N TO I RET Branchements inconditionnels Appel de procedure Retour dune procedure Saut inconditionnel Contrles diterations Bouclage tant que CX = 0 Bouclage tant que CX = 0 et ZF = 1 (egalite)
~ ~
Saut si CX est nul Interruptions Interruption logicielle Interruption si OF = 1 (overflow) Retour dune interruption
3/19/13
187187
paritimpaire (si PF = 0) signe positif (si SF = 0) dpassement (si OF = 1) paritpaire (si PF = 1) Saut si signe ngatif (si SF = 1)
Saut si Saut si Saut si Saut si
3/19/13
188188
W AI T ESC LO CK
Attente tant que TEST nest pas a` 0 Prfixe = instruction destine a` un coprocesseur Prfixe = rservation du bus pour linstruction Pas doperation
NO P 3/19/13
Pas dopration
189189