Vous êtes sur la page 1sur 7

IntroductionLe :

microprocesseur est un lment indispensable dans un ordinateur. Il s'agit d'unlment


semi-conducteur au silicium dont la fabrication ncessite une prcisionextrme. En effet, le
microprocesseur intgre plusieurs millions de transistors utilissen commutateurs.Le
microprocesseur est non seulement prsent dans les ordinateurs, mais aussidans d'autres types
d'appareils lectroniques. Ce manuel apporte un approchesimple de ce type de circuit
complexe.

Programmation en assembleur :

Tout programme doit tre transform en langage machine (suite de code binaire)pour
tre comprhensible par les circuits internes du microprocesseur. Le langagemachine peut tre
entr manuellement, mais cette tche est complexe et sujette denombreuses erreurs. Le
langage assembleur est le niveau suprieur au langagemachine, et est utilis uniquement dans
la programmation des microprocesseurs etautres composants semi-conducteurs complexes.

Le jeu de registres :

Le jeu de registre contient l'ensemble des registres du microprocesseur. Un registreest


une petite partie de mmoire intgre au microprocesseur, dans le but derecevoir des
informations spcifiques, notamment des adresses et des donnesstockes durant l'excution
d'un programme. Il existe plusieurs types de registres.Certains d'entre eux sont affects des
oprations d'ordre gnral et sontaccessibles au programmeur tout moment. Nous disons
alors qu'il s'agit deregistres gnraux. D'autres registres ont des rles bien plus spcifiques et
nepeuvent pas servir un usage non spcialis. Enfin, d'autres registres sont invisibleset par
consquent inaccessible au programmeur. Ces registres ne sont accessiblesqu'au
microprocesseur. Lorsque nous excutons un programme, l'UAL toujoursaccs ces
registres. Nous verrons plus loin qu'il est possible d'affecter des valeurs notre guise aux
registres gnraux

I. le microprocesseur Intel 8085 :


L'Intel 8085 est un microprocesseur 8 bits fabriqu par Intel au milieu des annes
1970.

Il tait compatible au niveau du code binaire avec le plus clbre Intel 8080, mais
demandait moins de matriel environnant, ce qui permit la cration de micro-ordinateurs plus
simples et moins chers construire.

Le 5 dans le numro du modle provient du fait que les 8085 exigeaient seulement
une alimentation de +5V plutt que les +5V, -5V et +12V exigs par les 8080. Cependant, il
tait plus lent que le 8080. Sa vitesse tait de 1,5 million d'instructions la seconde avec une
horloge 6,144 MHz, et 4 cycles par instruction.

Ces deux processeurs ont parfois t utiliss dans des ordinateurs bass sur le systme
d'exploitation CP/M. Ils furent par la suite supplants par le Zilog Z80, compatible et plus
efficace, qui remporta la majeure partie du march des ordinateurs CP/M et des ordinateurs
personnels du milieu et de la fin des annes 1980.

Le 8085 fut utilis ultrieurement comme microcontrleur (surtout grce au cot


rduit des composants). Ainsi, il quipait le dispositif bandes DECtape et le terminal vido
VT101. Il continua donc tre produit pendant toute la dure de vie de ces produits. De

1
mme, il fut embarqu sur le robot de la mission Mars Pathfinder[1]. Il est actuellement
encore utilis dans lenseignement

Ses caractristiques principales sont les suivantes :

Bus de donnes dune largeur de 8 bits.


bits, ce qui permet dadresser un total de 1 mgaoctet de Bus dadresses de
mmoire.
8 registres de 8 bits dont un registre dtat contenant des indicateurs binaires.

La mmoire est segmente en 16 blocs de 64 Ko et une adresse sur 20 bits est obtenue
en combinant deux parties :

Le registre CS permet de stocker les 4 bits de poids fort donnant le numro de


segment de mmoire ;
Le registre IP fournit le 16 bits de poids faible donnant ladresse lintrieur
du segment de mmoire spcifi par CS.

Ladresse mmoire est retrouve selon la formule :

Adresse= (16 x CS) + IP.

Le 8085 autorise un mode de fonctionnement en pas pas, ainsi que lutilisation


doprations spcifiques appeles interruptions permettant au 8086 de dialoguer avec les
autres priphriques de lordinateur.

Les registres du 8086 se dcomposent en 4 grandes familles :

4 registres de donnes, se dcomposant chacun en deux parties : une partie haute et


une partie basse de 8 bits chacune, ce qui permet au microprocesseur de manipuler
des donnes sur 8 ou 16 bits :

AX (dcomposable en AH et AL) sert daccumulateur et est principalement utilis -


lors doprations arithmtiques et logiques ;
BX est la plupart du temps utilis comme oprande dans les calculs ; -
CX est utilis comme compteur dans les structures itratives ; -
DX, tout comme AX, est utilis pour les calculs arithmtiques et notamment dans la -
division et la multiplication. Il intervient galement dans les oprations
dentres/sorties.

registres de segmentation :

CS (segment de code) permet de dterminer les adresses sur 20 bits ; -


DS (segment de donnes) ; -
SS (segment de pile) ; -
ES (segment supplmentaire). -

2
registres pointeurs ou dindex :

SP (pointeur de pile) pointe sur le sommet de la pile de donnes ; -


BP (pointeur de base) pointe sur la base de la pile de donnes ; -
SI (index de source) ; -
DI (index de destination). -

pointeur dinstruction : IP stocke ladresse de la prochaine instruction excuter par le


microprocesseur.

registre spcial contenant 9 indicateurs binaires nomms flags :

AF (indicateur de retenue auxiliaire) ; -


CF (indicateur de retenue) est mis 1 lorsquil y a eu une retenue lors dun calcul ; -
OF (indicateur de dbordement) est mis 1 lorsquun dbordement arithmtique a -
eu lieu (lorsque le rsultat dune opration ne peut tenir sur 16 bits) ;
SF (indicateur de signe) reprsente le signe du rsultat dune opration (0 = positif, -
1 = ngatif) ;
PF (indicateur de parit) est mis 1 lorsque le rsultat dune opration contient un -
nombre pair de 1 ;
ZF (indicateur de zro) est mis 1 lorsque le rsultat dune opration vaut 0 ; -
DF (indicateur de direction) ; -
IF (indicateur dautorisation dinterruption) ; -
TF (indicateur dinterruption pas pas). -

Le 8085 est programmable dans un langage dassemblage comportant des instructions


utilisant les registres, les flags, la mmoire et, en ce qui concerne les interruptions, dautres
lments de lordinateur. Voici un aperu des instructions les plus couramment utilises (dans
la liste qui suit, les mots entre parenthses indiquent le nom de linstruction). Ces instructions
seront tudies plus en dtail dans la section consacre la partie CPU de notre mulateur.

Instructions arithmtiques : addition (ADD), soustraction (SUB), multiplication


(MUL), division (DIV), incrmentation (INC), dcrmentation (DEC) et change
(XCHG) ;
Instructions logiques : et (AND), ou (OR) et non (NOT) ;
Instruction de comparaison (CMP) : met jour les flags pour permettre
lutilisation des instructions de saut ;
Instructions de saut : saut si gal (JE), saut si diffrent (JNE), saut si infrieur (JL),

Instructions de gestion de la pile : empilement (PUSH) et dpilement (POP)
Instruction dappel (CALL) et de retour (RET) ;

Register 7 RAM 5 microprocessor 8085



..
8085
8085 PIC_MICRO CONTROLLER
..., ,
3
3MHZ crystal oscillator
x1&x2 ..
..
:
Accumulator A ()
..
BC ,HL,DE
..
:
:
_1 ( )
_2 ( )
_3 ( )
) _4 ( if
:
:
( ++)
CALL XXXXH
XXXX ..
operational code op
code
Hexa
:
_ _1 8 Hexa
_ _16 _16 2
__8 2

MODE INSTRUCTI COMMENTAIRE


ON

MOV AX, 600H IP=0000 immdiat Cela signifie que la valeur 600h sera stocke immdiatement dans le
AH=06 registre AX

MOV DS, AX IP=0003 registre Cela signifie que l'oprande stocke dans le registre AX sera transfre
DS=0600 vers le registre DX

MOV AX, 700H IP=0005 immdiat Cela signifie que le valeur 700h sera stocke immdiatement dans le
AH=07 registre AX

MOV SS, AX IP=0008 registre Cela signifie que l'oprande stock dans le registre AX sera transfre
SS=0700 vers le registre SS

MOV AX, 800H IP=000A Immdiat cela signifie que la valeur 800h sera stocke immdiatement dans le
AH=08 registre AX

MOV ES, AX IP=000D Registre Cela signifie que l'oprande stocke dans le registre AX sera transfre

4
ES=0800 vers le registre ES

MOV AX, 1234H IP=000F Immdiat Cela signifie que la valeur 1234h sera stocke immdiatement dans le
AX=1234 registre AX

MOV BX, AX IP=0012 Registre Cela signifie que l'oprande stock dans le registre AX sera transfre
BX=1234 vers le registre BX

MOV CX, BX IP=0014 Registre Cela signifie que l'oprande stocke dans BX sera transfre vers le
CX=1234 registre CX

MOV DL, CH IP=0016 Registre Cela signifie que l'oprande stock dans le registre CH sera transfre
DL=12 vers le registre DL

MOV [100H], DL IP=0018 Direct L'oprande stocke dans le registre DL sera transfre vers la case
mmoire dans l'adresse 100h

MOV [102H], AX IP=001C Direct L'oprande stocke dans le registre AX sera transfre vers la case
mmoire dans l'adresse 102h

MOV CH, [102H] IP=001F Direct La valeur 102h est un constante qui doit tre ajout au contenu du
CH=00 registre CH pour fermer l'adresse physique 20bites

MOV BX, 104H IP=0023 Immdiat Cela signifie que la valeur 104h sera stocke immdiatement dans le
BX=0104 registre BX

MOV [BX], AL IP=0026 Indirect bas L'oprande stocke dans le registre AL sera transfre vers la case
mmoire dans l'adresse se trouve dans le registre BX

MOV BP, 104H IP=0028 Immdiat Cela signifie que la valeur 104h sera stocke immdiatement dans le
BP=0104 registre BP

MOV [BP], DL IP=002B Indirect bas L'oprande stocke dans le registre DL sera transfre vers la case
mmoire dans l'adresse se trouve dans le registre BP

MOV DH,[BX]+4 IP=002E Relatif a une Cela signifie que dans le registre DH on a mettre le contenu d
base case mmoire pointe par bh+4

MOV DH,[BP]+4 IP=0031 Relatif a une Cela signifie que dans le registre DH on a va mettre le conten
base la case mmoire pointe par BP+4

MOV DI, 3H IP=0034 Immdiat Cela signifie que la valeur 2h sera stocke immdiatement dan
ID=0003 registre DI

MOV [DI], AX IP=0037 Indirect index L'oprande stocke dans le registre AX sera transfre vers la
mmoire dans l'adresse se trouve dans le registre DI

MOV AX, 100H IP=0039 Immdiat Cela signifie que la valeur 100h sera stocke immdiatement d
AX=0100 le registre AX

MOV DS, AX IP=003C Registre Cela signifie que l'oprande stocke dans le registre AX
DS=0100 transfre vers le registre DS

MOV DH, 78H IP=003E Immdiat Cela signifie que la valeur 78h sera stocke immdiatement dan
DH=78 registre DH

5
MOV [100H], DH IP=0040 Direct L'oprande stocke dans le registre DH sera transfre vers la
mmoire dans l'adresse 100h

MOV [102H], CX IP=0044 Direct L'oprande stocke dans le registre CX sera transfre vers la
mmoire dans l'adresse 100h

MOV BX, 100H IP=0048 Immdiat Cela signifie que la valeur 100hsera stocke immdiatement d
BL=00 le registre BX

MOV BP, 100H IP=004B Immdiat Cela signifie que la valeur 100hsera stocke immdiatement d
BP=0100 le registre BP

MOV DL, [BX] IP=004E Indirect bas Le contenu de la case mmoire dans l'adresse se trouve dan
DL=78 registre BX est mise dans le registre DL

MOV DL, [BP] IP=0050 Indirect bas Le contenu de la case mmoire dans l'adresse se trouve dan
DL=00 registre BP est mise dans le registre DL

MOV BX,[BX] +2 IP=0053 Relatif a une Cela signifie que dans le registre BX on va mettre le contenu d
BX=0034 base case mmoire pointe par BX+2

MOV DH, [BP] +2 IP=0056 Relatif a une Cela signifie que dans le registre BP on va mettre le contenu d
DH=00 base case mmoire pointe par BH+2

MOV SI, 1 IP=0059 Immdiat Cela signifie que la valeur 1 sera stocke immdiatement dan
SI=0001 registre SI

MOV DL,[BX][SI] IP=005C Indirect bas- Cela signifie que dans le registre DL on va charger le contenu
index case mmoire pointe par BX+SI

MOV DL,[BP][SI] IP=005E Indirect bas- Cela signifie que dans le registre DL on va charger le contenu
index case mmoire pointe par BP+SI

I I. Conclusion :
Lapprentissage de la programmation en assembleur tant une tche ardue pour un
programmeur, nous avons tent, au travers de cette application, de la lui faciliter. Son
6
interface conviviale, mettant laccent sur les bases en laissant les dtails trop techniques de
ct, a pour ambition daider le dbutant mieux apprhender le fonctionnement de
lassembleur.

Du fait de linteractivit existante pendant lexcution dun programme, il est


particulirement ais de comprendre les effets de chaque instruction non seulement sur lordre
dexcution de celles-ci, mais aussi sur les donnes manipules (mmoire, pile, registres et
flags).

En ce qui nous concerne, ce projet a t loccasion de dvelopper une vritable


application crite en Java, et ce en utilisant ses capacits en terme de gestion dinterfaces
graphiques. Le fait de programmer dans un langage objets nous a permis dapprendre
modliser entirement un problme laide dune hirarchie de classes. Dautre part, le fait
que le stage soit en rapport troit avec la programmation en assembleur et le fonctionnement
dun microprocesseur nous a apport une meilleure matrise de ces deux notions.