Vous êtes sur la page 1sur 69

Pr.

Abdelali EL BDOURI

Haut Niveau VS Bas Niveau

Assembleur: philosophie et atouts


Lassembleur abrg ASM est le langage de programmation de plus bas niveau.
langage de programmation :

Un langage trop proche du matriel oblige le programmeur se soucier de concepts proches du fonctionnement de la machine

un code de communication, permettant un tre humain de dialoguer avec sa machine.

Assembleur: philosophie et atouts


le terme "Assembleur" dsigne tour tour deux choses diffrentes:
Le langage de programmation de plus bas

niveau accessible facilement un humain. Un logiciel transformant un fichier source contenant des instructions, en un fichier excutable que le processeur peut comprendre.

lassembleur : rien n'est parfait


Le programme est long et

fastidieux crire.
Les programmes crits en

assembleur sont trs peu portables vers une autre architecture, existante ou future.
Raliser un programme complet

avec demande normment d'efforts et d'exprience.


Difficult de localisation d'erreurs

au cours de la mise au point du programme.


le cot de dveloppement.

lassembleur : Avantages.

la possibilit de faire tout et n'importe quoi avec la mmoire. L'ASM n'a pas de limite et de scurit. Autant il peut tre utile, autant il peut dtruire. Les programmes faits en ASM sont plus petits, plus rapides et beaucoup plus efficaces que ceux fait avec des compilateurs.

lassembleur : Avantages.

le seul langage permettant de modifier un programme compil dont on na pas les sources (utiles pour le Reverse Engineering entre autres).
Possibilit d'intgration dans des langages de plus haut niveau pour les parties ncessitant d'tre optimiser, d'ailleurs bon nombre de langages de programmation permettent, afin de combler leurs lacunes (vitesse d'excution, accs aux priphriques, etc.), d'appeler des routines crites en assembleur.

lassembleur : Avantages.

Vu que lassembleur est qualifi comme tant le langage de programmation le plus bas niveau, il dpend donc fortement du type de processeur. Ainsi il n'existe pas un langage assembleur, mais un langage assembleur par type de processeur.

Les diffrents systmes programmables


Les circuits spcialiss ou ASIC : (Application Specific Integrated Circuit) Les circuits spcialiss sont des circuits spcialiss ds leur conception pour une application donne (circuit sur mesure ). exemples:
DSP (Digital Signal

Processor)
processeur 3-D (carte

graphique)
contrleur de bus, ...

Les diffrents systmes programmables


Les circuits spcialiss ou ASIC : (Application Specific Integrated Circuit) Avantages : Trs rapide Consommation moindre Optimis pour une application

Inconvnients : Possibilit d'volution limit Cot

Les diffrents systmes programmables


PLD (programmable logic device, circuit logique programmable): Un circuit logique programmable, ou rseau logique programmable, est un circuit intgr logique qui peut tre reprogramm aprs sa fabrication. Il est compos de nombreuses cellules logiques lmentaires pouvant tre librement assembl. (Wikipdia) FPGA (field-programmable gate array, rseau de portes programmables in-situ), PAL (programmable array logic, rseau logique programmable), ...

Les diffrents systmes programmables


PLD (programmable logic device, circuit logique programmable): Avantages :
Forte modularit Rapidit

Inconvnients :
Mise en uvre plus complexe
Cots de dveloppement

lev

Les diffrents systmes programmables


Microprocesseur et Microcontroleur :

Un microprocesseur constitue le coeur de tout ordinateur: il excute les instructions qui composent les programmes que nous lui demandons dexcuter. caractris par une trs grande intgration et dot des facults fonctionnelles dinterprtation et dexcution des instructions dun programme .

Microcontrleur = Microprocesseur + priphriques

Les diffrents systmes programmables


Microprocesseur et Microcontroleur : Avantages :
Mise en uvre simple. Cots de dveloppement

rduits.

Inconvnients :
Plus lent. Utilisation sous optimale

Elments de base dun systme microprocesseur :

Elments de base dun systme microprocesseur :

Elments de base dun systme microprocesseur :


Le microprocesseur:
Appel souvent Unit Centrale
CPU qui prend en charge les calculs arithmtiques/ logiques lmentaires et les tests.

Linterfaage Entre/Sortie:
Constitu de deux modules :

Le module dentre:
contient tous les dispositifs servant prlever des informations et des donnes de lextrieur du calculateur et les transfrer dans sa mmoire.

Lunit de mmoire:
Comprenant aussi bien de la
mmoire vive RAM que de la mmoire morte ROM, EPROM, ... Cette section reoit le programme et les donnes, ces derniers tant modifis au fur et mesure que se droule le traitement. Cette section sert galement la mmorisation des valeurs intermdiaires et des valeurs finales des calculs raliss pendant lexcution du programme.

Le module de sortie:
regroupe tous les lments que lon a prvu pour transfrer des donnes et des informations du calculateur vers le monde extrieur.

Elments de base dun systme microprocesseur :


les bus:
Un bus de donnes : Permettant les transferts dinformations sur un faisceau de plusieurs conducteurs parallles. Le nombre de fil est lune des caractristiques essentielles de lUC. En principe, la largeur du bus de donnes est gale la taille des mots manipuls par le microprocesseur (8 bits, 16 bits, ...). Un bus dadresses : un ensemble de conduits parallles unidirectionnel permettant de pointer toutes les cases mmoires adressables par le calculateur numrique. Le nombre de lignes de ce bus dtermine la taille maximale de la mmoire.
Un bus de commande et de contrle : Comportant : Des lignes qui permettent lUC de spcifier la RAM ou aux ports dentre et de sortie si elle veut faire une criture ou une lecture.

Des lignes utilises par lUC pour rpondre aux priphriques, par exemple : acceptation dune demande dinterruption ou dun accs direct mmoire, ...

Dfinition et volution des microprocesseurs

Dfinition
Un P est gnralement une puce intgre programmable renfermant tous les circuits de lunit de commande, des registres et de lunit arithmtique et logique.
le microprocesseur regroupe un certain nombre de transistors lmentaires interconnects, caractris par une trs grande intgration et dot des facults fonctionnelles dinterprtation et dexcution des instructions dun programme Il se charge des fonctions suivantes: Fournir les signaux de synchronisation et de commande tous les lments du calculateur. Prendre en charge les instructions et les donnes en mmoire. Transfrer les donnes entre la mmoire et les dispositifs dEntre/Sortie et vice versa. Dcoder les instructions des programmes. Effectuer les oprations arithmtiques et logiques correspondant aux instructions. Ragir aux signaux de commande produits par les E/S comme le signal dinitialisation (Reset),les signaux correspondant aux interruptions, ...

Evolution :
le premier micro processeur a t

invent, en 1971, par Intel


le premier microprocesseur qui a

t commercialis, le 15 novembre 1971, est l'Intel 4004 ( 4-bits).

Composants d'un microprocesseur


Les trois lments Une unit arithmtique et logique (UAL). Une unit de commande (UC). jeu de registres . Ces trois lments sont relis entre eux par un bus interne, celui-ci permettant les changes de Donnes entre les diffrentes parties du microprocesseur

Composants d'un microprocesseur


UAL: Elle permet deffectuer les oprations arithmtiques (+, -, *, /) et logiques (OR, AND, XOR). Exemple de circuit : 74LS181, UAL 4 bits Ce circuit ralise des fonctions arithmtiques et logiques sur A et B, avec le rsultat dans F. Lopration est dtermine par M et par les entres de slection S0, S1, S2, et S3 : M=1 : 16 fonctions logiques M=0 : 16 fonctions arithmtiques

Composants d'un microprocesseur


Lunit de commande:

Elle permet de "squencer" le droulement des instructions. Elle effectue la recherche en mmoire de l'instruction, le dcodage, l'excution et la prparation de l'instruction suivante. L'unit de commande labore tous les signaux de synchronisation internes ou externes (bus des commandes) au microprocesseur.

Son rle est : denvoyer des signaux de contrle pour connecter les registres au bus.
de superviser le fonctionnement de lUAL. de donner des signaux dhorloge lensemble de P.

Composants d'un microprocesseur


Jeu de registres:

ils sont en nombre trs limite. Certains d'entre eux sont affects des oprations d'ordre gnral et sont accessibles au programmeur tout moment. Nous disons alors qu'il s'agit de registres gnraux. D'autres registres ont des rles bien plus spcifiques et ne peuvent pas servir un usage non spcialis. Enfin, d'autres registres sont invisibles et par consquent inaccessible au programmeur. Ces registres ne sont accessibles qu'au microprocesseur.

Le jeu de registre contient l'ensemble des registres du microprocesseur. Loges directement sur le processeur

Deux types de processeurs :

CISC :( Complex Instruction Set Computer)


Grand nombre d'instructions, Type de processeur le plus

RISC : (Reduced Instruction Set Computer)


Nombre d'instructions rduit

rpandu

(slection des instructions pour une excution plus rapide)


Dcodage des instructions

plus rapide

Structures des systmes P


Structure de Von Neumann Structure de Harvard

Les lments de choix


Architecture :
ALU (8, 16, 32, 64 bits)
Structure du processeur Fonctions analogiques : CAN,

Fonctionnalits :

(Harvard, Von Neumann).


Type de processeur (RISC,

CNA, Comparateur, ...


Fonctions de communication :

CISC).
Taille des mmoires

UART (Communication
srie), USB, I2C, ... Facilit de programmation

programme et donne.
Nombre de ports

dentre/sortie.

Les lments de choix


Mise en uvre, maintenance :
Cot de dveloppement :

Caractristiques lectriques :
Frquence dhorloge Tensions dalimentation

outils de dveloppement, formation, ...


Suivi du microcontrleur :

Consommation dnergie,

production suivie, disponibilit, composant obsolte, ... Caractristiques physiques :


Type de botier : DIL, PLCC,

...

Registres du CPU
Les registres les plus importants: Compteur ordinal (CO). Registre d'instruction (RI). Accumulateur (ACC). Registres gnraux. Registres d'index (XR). Registre d'tat . Registre pointeur de pile.

Le nombre et le types des registres que possde le CPU sont une partie dterminante de son architecture et ont une influence importante sur la programmation.

Compteur Ordinal (CO)


Le registre CO (Program counter

"PC") contient toujours l'adresse mmoire de la prochaine instruction excuter . Le CO est automatiquement incrment aprs chaque utilisation. Le programme est ainsi excut en squence moins qu'il ne contienne une instruction modifiant la squence (ex :instruction de saut). La taille du CO dpend du nombre de positions de mmoire adressables par le p. Le programmateur n'a pas accs direct au CO.

Ex: (PC)=10000H ; il pointe la mmoire qui contient l'instruction MOV C,B qui est code sur deux octets (89 D9H) ; l'unit de commande incrmentera de deux le contenu du PC : (PC) =10002H (la mmoire sera suppose tre organise en octets).

Registre dinstruction (RI)


Lorsque le CPU va chercher une

instruction en mmoire, il la place dans le registre dinstruction (RI).


La taille de RI correspond la taille

RI

du mot mmoire.
Sa valeur est dcode par un

Dcodeur

dcodeur pour dterminer lopration excuter.

Squenceur

Accumulateur (ACC)
Le registre le plus important de

lUAL
Dans la plupart des oprations

arithmtiques et logique , laccumulateur contient un des oprandes avant l'excution et le rsultat aprs.
Il a la mme taille que le mot

mmoire et le programmeur a un accs direct l'accumulateur.

Registres gnraux
Permettent de sauvegarder

des information frquemment utilises pendant le programme ou des rsultats intermdiaires pour viter des accs la mmoire acclrant ainsi lexcution du programme.
Ils sont la disposition du

Chargement dun registre

programmeur qui peut les utiliser avec les instructions qui les manipulent :

partir de la mmoire ou dun autre registre. Enregistrement en mmoire du contenu registre. Transfert du contenu registre dans l'accumulateur et viceversa. Incrmentation ou dcrmentation d'un registre.

Registre dindex (XR)


Peuvent tre utiliss comme des

registre gnraux pour sauvegarder et pour compter.


Utiles pour la manipulation des

tableaux de donnes.
Utiliss dans le mode d'adressage

index.

Adresse effective de loprande = Base (contenu de registre) d'index + Dplacement

Registre dtat
Appel aussi registre condition.
Il contient diffrents bits appels

drapeaux (flags) indiquant l'tat d'une condition particulire dans le CPU.


Ces bits peuvent tre tests par

programme et ainsi dterminer la squence d'instructions suivre.(cas des branchement conditionnels)

Registre pointeur de pile (SP)


Ce registre est utilis pour simuler

une pile dans la mmoire, dans laquelle on rserve une zone mmoire. Il contient l'adresse du sommet de la pile. Celle-ci est une partie de la mmoire, elle permet de stocker des informations (le contenu des registres) relatives au traitement des interruptions et des sousprogrammes. La pile est gre en LIFO : (Last IN First Out) dernier entr premier sorti. Le pointeur de pile SP pointe le haut de la pile, il est dcrment avant chaque empilement, et incrment aprs chaque dpilement.

exemple: PUSH A empilera le registre A et POP A le dpilera.

Registre pointeur de pile (SP)


Question?
Que se passera-t-il durant l'excution du programme

commenant en 12E30H?
Que vaudra SP et que contiendra

la pile cette adresse,


la fin du programme?

Registre pointeur de pile (SP)


Rponse. Le programme commence par sauvegarder le contenu de C dans la pile (PUSH C). Pour cela (SP) est dcrment de deux ((SP)=31000H-2=30FFEH), puis on effectue l'criture de (C) dans la mmoire l'adresse (SP) : (30FFEH) = 6142H. Pour PUSH A on obtient : (30FFCH)=1234H, et pour PUSH B : (30FFAH)=2D5AH. Pour l'instruction POP B, ((SP)) est charg dans le registre B ((SP)=30FFAH ; (B)=2D5AH) puis (SP) est incrment de deux ((SP)= 30FFAH+2=30FFCH). Enfin, pour POP A on obtient : (A)=1234H et (SP)=30FFCH + 2 = 30FFEH

Structure dune instruction

Opcode

Oprande

instruction

Structure dune instruction


Chaque ligne est compose de champs

Le champ tiquette, qui peut tre vide. Le champ mnmonique (obligatoire) Le champ oprande, par exemple EAX, BX, DH,

CL, MonCompteur, 10 (normalement obligatoire) Et dun champ commentaire, qui peut tre vide.

Structure dune instruction


tiquette :

o Une instruction peut tre prcde d'un identificateur qui reprsente l'adresse de stockage de cette instruction. On appelle cet identificateur une tiquette (label en anglais).
o Ie label permet un reprage plus ais lintrieur du programme. Le nom du label est

arbitraire. Vous pouvez le nommer comme a vous chante tant qu'il est unique et ne viole pas la convention de nom de lassembleur.

Structure dune instruction


tiquette : rgles dcriture
Par exemple vous ne pouvez pas prendre le mot 'MOV' comme

nom de label.
Nutilisez pas de labels qui peuvent tre confondus avec dautres

labels.
Evitez les lettres I, O, Z, et les chiffres 0, 1, 2. Evitez aussi des labels tels que XXXX et XXXXX car on ne les

diffrencie pas aisment.

Structure dune instruction


Mnmonique : Un mnmonique dinstruction est un mot court qui identifie une instruction. Oprandes : La syntaxe assembleur Intel x86 dfinit

loprande de gauche comme oprande destination, celui dans lequel on trouve le rsultat de linstruction. Loprande de droite est appel oprande source. Le champ oprande est un champ optionnel selon linstruction. Une instruction peut avoir entre zro et trois oprandes.

Structure dune instruction


Oprandes :

Dans la plupart des assembleurs, il ne peut y avoir quune seule instruction par ligne. Chaque oprande peut tre le nom dun registre, une constante, une expression constante ou un emplacement mmoire.(suivant le mode d'adressage)

Structure dune instruction


Exemples

Intel 8086

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, ...). Il se prsente sous la forme dun botier DIP (Dual In-line Package) 40 broches

Description physique du 8086

Schma fonctionnel du 8086

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.

Description et utilisation des signaux du 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. Le signal de RESET est fourni par le gnrateur dhorloge. READY : entre de synchronisation avec la mmoire. Ce signal provient galement du gnrateur dhorloge.

Description et utilisation des signaux du 8086


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.

Description et utilisation des signaux du 8086


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).

Description et utilisation des signaux du 8086


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 demultiplexage pour obtenir sparment les bus dadresses et de donnes

Description et utilisation des signaux du 8086


Chronogramme du bus A/D :

Description et utilisation des signaux du 8086


Le dmultiplexage des signaux AD0 AD15:

Il 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.

Description et utilisation des signaux du 8086


Le dmultiplexage des signaux AD0 AD15: Circuit de demultiplexage A/D :

Description et utilisation des signaux du 8086


Le dmultiplexage des signaux AD0 AD15: 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.

Description et utilisation des signaux du 8086


Le dmultiplexage des signaux AD0 AD15: Exemples de bascules D : circuits 8282, 74373, 74573.

Description et utilisation des signaux du 8086


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).

Description et utilisation des signaux du 8086


Chronogramme des signaux DEN et DT/R

Description et utilisation des signaux du 8086


Utilisation des signaux DEN et DT/R :
Il 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.

Organisation interne du 8086

Le 8086 est constitu de deux units

fonctionnant en parallle : lunit dexcution (EU : Execution Unit) . lunite dinterface de bus (BIU : Bus Interface Unit).

Organisation interne du 8086

Organisation interne 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).

Organisation interne du 8086


Le microprocesseur 8086 contient 14 registres

rpartis en 4 groupes :
Registres gnraux : 4 registres sur 16 bits. Registres de pointeurs et dindex : 4 registres sur 16 bits. Pointeur dinstruction et indicateurs (flags) : 2 registres sur

16 bits.
Registres de segments : 4 registres sur 16 bits.

Organisation interne du 8086