Registres

publicité
Les mP 80x86 d’Intel : histoire et
caractéristiques
1.Rappel historique Bref sur la famille 80x86
2. A l’intérieur du mP 8088/8086
3. Introduction a la programmation Assembleur
4. Segmentation des programmes
5. Modes d’Adressage
1 Rappel historique Bref sur la famille 80x86
- Évolution de 8080/8085 à 8086:
En 1978, Intel introduit le mP8086 à 16-bit, qui améliore les performances de la série mP8080/85
de plusieurs façons.
- Le mP 8086 possède 16 lignes d’adresses (64Ko de mémoire), alors que le
mP 8080/8085 en possède 8 lignes d’adresses (256 octets).
- Le mP 8080/8085 a une architecture 8-bit, i.e. les données de plus de 8bits sont
traitées en morceaux de 8-bits par la CPU. Alors que le 8086 est un mP à 16-bits.
- Le mP 8086 est de conception pipeline contrairement au mP 8080/8085. Dans un
système à base de pipeline, les bus de données et d’adresses sont occupés à
transférer des données pendant que la CPU traite une information. Ceci a pour
avantage de croître la puissance de traitement du mP.
- Évolution de 8086 a 8088:
- Le mP 8086 a une architecture interne et externe de 16-bit, i.e. tout ses registres sont
de 16-bits et un bus de données également de 16-bits pour transférer des données de/vers la CPU.
- Le mP 8086 a marqué une grande avancée par rapport aux générations précédentes,
mais il a rencontré une résistance d’utilisation du au fait que son bus de données externe de 16-bits
ne prêtait pas aux périphériques existants en ce moment conçus pour des mP à 8-bits. En plus du
fait que les cartes de circuits imprimés avec un bus de données 16-bits étaient chères.
- Ceci explique pourquoi Intel a conçu le mP8088, qui est le même que le mP8086 au
niveau de la programmation avec la même capacité mémoire, 1Mo. Seulement son bus de données
externe est 8-bits au lieu de 16-bits.
1 Rappel historique Bref sur la famille 80x86
- Succès du mP 8088:
La situation financière d’Intel s’est considérablement amélioré lorsque IBM a choisi le 8086
comme le mP de choix pour son micro-ordinateur IBM PC, qui a connu un énorme succès, a
cause du fait qu’IBM et Microsoft (qui a développé MSDOS), l’ont rendu système ouvert, i.e.
la documentation hardware et software du PC est accessible au public. Ceci a permis aux
autres vendeurs de cloner le hardware avec succès.
-Le mP 80286
- Avec le succès qu’a connu Intel et devant le besoin manifeste des utilisateurs PC
pour un mP plus puissant, Il a introduit le mP 80286 en 1982. Ses principales caractéristiques
sont: un bus de donnes interne et externe de 16-bit, un bus d’adresses de 24-bit (ciblant
16Mbytes de mémoire), et surtout sa mémoire virtuelle.
- Le mP 80286 opère en 2 modes: réel et protégé. Le mode réel n’est autre que la
version rapide du mP 8088/8086 avec la même mémoire de 1Mo. Le mode protégé permet
d’adresser une mémoire de 16Mo, mais aussi capable de protéger le OS et programmes d’une
destruction accidentelle par l’utilisateur. Cette caractéristique est absente avec le mP 8088/86.
- La mémoire virtuelle est une façon de tromper le mP en pensant qu’il a accès a une
mémoire illimité en inter-changeant les données entre le disque et la RAM.
- IBM a choisi le mP 80286 pour son micro-ordinateur IBM PC/AT et les fabricants
clones ont suivi.
1 Rappel historique Bref sur la famille 80x86
Les mP 80386 et 80486
- Les utilisateurs demandent toujours des mP plus puissants. Ainsi Intel introduit en 1985 le mP
80386 (Appelé également 80386DX). Un mP d’architecture 32-bits (interne et externe) et un
bus d’adresses de 32-bits, capable de cibler une mémoire physique de 4Go. Sa mémoire
virtuelle a été augmenté à 64 To.
- Tout les mP précédents sont a utilisation générale, donc ne sont pas capable de traiter
rapidement des opérations mathématiques. Intel a mis sur le marche des circuits coprocesseurs mathématiques, comme les 8087, 80287 et 80387.
- Plus tard Intel a introduit le mP 80386SX, qui a la même architecture interne que le mP 80386
mais avec un bus de données a 16-bits et un un bus d’adresses a 24-bits (1Mo de mémoire).
Ce qui rend son prix moins cher.
- Avec l’introduction du mP 80486, Intel a amélioré le mP 80386 en intégrant un co-processeur
mathématique dans une seule puce. En plus d’autres caractéristiques telles que mémoire
cache (mémoire SRAM a temps d’accès très rapide), ont été introduites.
- Il est important de noter que les programmes écrit pour le mP 8088/86 peuvent être exécutés
également sur les mP 80x86.
- D’autres générations qui sont venus après les mP 80x86 ont pour noms mP Pentium.
2 : A l’intérieur du mP 8088/8086
Pipeline
-
Avec les mP 8088/86 Intel  unités EU et BIU concurrentes (travaillent simultanément).
-
BIU  la mémoire et les périphériques + EU exécute les instructions recherchées précédemment.
-
BIU possède un buffer (chaîne), qui permet de stocker les instructions précédentes:
mP8088 possède une chaîne de 4 octets et le mP8086 en possède 6 octets.
-
Si une instruction est lente pour s’exécuter, le buffer se voit remplir vite et y restera ainsi 
La BIU ne cherche une nouvelle instruction que s’il y’a 2 octets inoccupés dans le buffer
(mP8086) et 1 octet ( mP8088).
-
Pour mP8088/86, il existe 2 stages de pipeline: fetch et exécute. Avec les mP plus puissants, il y’a
plusieurs niveaux de pipeline.
-
Pipeline + largeur du bus de données  conception de puissants mPs.
Fetch 1 Execute 1
Fetch 1
Execute 1
Fetch 2 Execute 2
Execution Sans Pipeline
mP8085
Execution avec
Pipeline
mP 80x86
Fetch 2 Execute 2
Fetch 3 Execute 3
2 : A l’intérieur du mP 8088/8086
Registres
-
Dans une CPU, les registres sont utilisés pour stocker de l’information temporairement. Celle-ci peut
être 1 octet ou 2 octets d’une donnée à traiter ou une adresse d’une donnée.
-
Quelques instructions utilisent des registres spécifiques pour accomplir leurs taches. D’après la 1ere
lettre, on peut deviner son utilisation.
CATEGORIES
REGISTRES
Générale
AX, BX, CX, DX
(AH, AL),
(BH, BL),
(CH, CL),
(DH, DL),
8 bits ou
16-bits
16-bits
Pointeur
SP, BP
Index
SI, DI
Segment
CS, DS,
SS, ES
Instruction
IP
AX15 AX14
AH7 AH6
FR
AX1 AX0
AH1 AH0
AL7 AL6
IP15 IP14
Flag
AX8 AX7
AL1 AL0
IP1 IP0
Bloc Diagramme de du mP 8088/86
EXECUTION UNIT (EU)
7
15
AX
BX
CX
DX
Source index
Destination index
Base pointer
Stack pointer
AH
BH
CH
DH
BUS INTERFACE UNIT (BIU)
0
AL
BL
CL
DL
Accumulateur
Registres de Segment
15
Base
0
CS
Compteur
SI
DS
SS
DI
ES
Données (E/S)
IP
BP
SP
Registres généraux
BUS MULTIPLIXE
GENERATION D’ADRESSES
&
BUS DE CONTROLE
OPERANDES
SEQUENCEUR
Buffer
ALU
FR
CHAINE D’INSTRUCTIONS
Registres d'état
et de contrôle
3 : Introduction à la programmation
Assembleur
Programmer vite et
moins d’erreurs
1400h 10110000
B0h
00100001
21h
00000100
04h
01000010
10100111
Bin
Hex
MOV AL, 21h
Meilleure programmation
ADD AL, 42h
42h
A7h
00011000
18h
00000000
00h
1407h 11110100
F4h
Langage
“MACHINE”
(Code Objet)
MNEMONIQUES (facile a se rappeler)
RAM
RAM
Bonne connaissance
des registres, leur
taille et de la CPU
en générale
ADD AL, [1800h]
HALT
Programme
“ASSEMBLEUR”
MASM (Microsoft), DEBUG,
TASM (Turbo Borland)
Langage
“ASSEMBLEUR”
(Langage bas-niveau)
Programme
“COMPILATEUR”
Langage
“C, Pascal, Basic”
(Langage haut-niveau)
(Code Source)
Pas besoin de
connaître la CPU
3 : Introduction à la programmation
Assembleur
Programme en langage Assembleur = série d’instructions écrite en langage assembleur.
Une instruction en langage assembleur = mnémonique suivi de un/deux opérandes (données à manipuler).
Une mnémonique = une commande a la CPU lui montrant ce que doit faire avec les opérandes.
Instruction MOV: copie (déplacer) une donnée d’une location à une autre.
MOV destination, source
MOV
CL, 55h
MOV
MOV
DL, CL
AH, DL
; copie opérande source  destination
; déplacer 55h vers le registre CL.
Attention: spécifie h pour MASM sinon décimal. Avec DEBUG pas besoin, tout HEX
; copie le contenu du registre CL vers le registre DL
; copie le contenu du registre DL vers le registre AH
Avec les registres 16-bits:
MOV
MOV
MOV
MOV
Attention!!!
MOV
MOV
MOV
MOV
Solution:
MOV
MOV
CX, 468Fh
AX, CX
DS, AX
BX, 9
; déplacer 468Fh vers le registre CX (CH = 46h et CL = 8Fh)
; copie le contenu du registre CX vers le registre AX
; copie le contenu du registre AX vers le registre DS
; copie la donnée 0009h vers le registre BX  BL = 09h et BH = 00h
AL, CX
AL, 2345h
FR, AX
CS, 3D15h
; erreur, les registres n’ont pas la même taille
; erreur, la donnée et le registre AL n’ont pas la même taille
; erreur, on on ne déplace pas le contenu du registre d’état et de contrôle
; erreur, les données ne peuvent être déplacées aux registres segments
AX, 3D15h
CS, AX
3 : Introduction à la programmation
Assembleur
Instruction ADD:
ADD destination, source ; ajouter l’opérande source a destination et le résultat vers destination
MOV
AL, 35h
; déplacer 35h vers le registre AL
MOV
BL, 94h
; déplacer 94h vers le registre AL
ADD
AL, BL
; AL = AL + BL ( C9h)
Il existe plusieurs façons d’écrire le même programme:
MOV
AL, 35h
; déplacer 35h vers le registre AL
ADD
AL, 94h
; AL = AL + 94h ( C9h)
Avec registres 16-bits:
MOV
CX, 235h
; déplacer 0235h vers le registre CX
ADD
CX, 594h
; CX = CX + 0594h ( 07C9h)
L’opérande source est un opérande immédiat ou registre. L’opérande destination est toujours registre.
4 : Introduction aux Segments du
programme
00000h
RAM
-
CS
DS
ES
64Ko
FFFFFh (= 220 =1Mo)
SS
Chaque segment = 64Ko (mP8088 a 16 lignes d’adresses).
Un segment peut se trouver à n’importe quelle adresse multiple de 16.
Les segments (C, D, S et E) peuvent être disjoints, se recouvrir, ou confondus.
La segmentation procure l’avantage de déplacer un programme en mémoire, il suffit de modifier le
contenu du registre CS (pagination du code sur le disque).
- Mécanisme d’adressage
Pour éviter d’utiliser des registres de 20-bits
pour stocker et calculer les adresses
Adresse logique = Adr. Seg. : Adr. Offset
Adresse physique = (Adr. Seg.)0h + Adr. Offset
Adresse Segment (CS, DS, SS, ES)
+
0000
(sur un
Adresse Offset (Effective) 16 bits
Adresse Physique 20 bits
Exemple: Pour exécuter un programme, le mP8086 « fetch » les instructions à partir de CS
CS : IP (2500h : 95F3h)  Adr. Phy. = 25000h + 95F3h = 2E5F3h
DS : DI (7521h : 85FBh)  Adr. Phy. = 75210h + 85FBh = 7D81Bh
ici Offset = IP
ici Offset = DI
segment
de 64 Ko)
(adresse
mémoire)
5 : Modes d’Adressage du mP80x86
A
R C
E C
G É
I S
S
T R
R A
E P
S I
D
E
A
M
É
M
O
I
R
E
C
- La CPU peut adresser des opérandes (Données) de plusieurs manières, appelés Modes d’Adressage .
- Leur nombre est déterminé une fois le mP conçu et ne peut être changé. Les mP80x86 en possède 7:
Registre, Immédiat, Direct, Indirect par registre, Base relative, Indexe relative et Base indexe relative.
1.
Adressage par Registre
2.
Adressage Immédiat
MOV AX, 2550h
ADD BL, 40h
Note: ce mode est utilisé pour charger une donnée dans un registre quelconque sauf FR et
(CS, DS, S, ES) MAIS  MOV AX, 2550h
MOV DS, AX
3.
Adressage Direct
MOV DL, [2550]
;contenu de DS:2500 dans DL
4.
Adressage Indirect
MOV AL, [BX]
; contenu de DS:BX dans AL
5.
N
T
Adressage Base relative
MOV CX, [BX]+9
MOV AL, [BP]+5
Note: MOV AL,[BP+5] ou MOV AL,5[BP]
L
E
ADD AL, AH
Notes: 1. Attention: différent de (MOV AL, BX) ; BX  AL (erreur!!  taille des registres)
2. MOV [DI], AH (copie un octet) et MOV [SI], AX
C
É
S
MOV DX, BX
6.
Adressage Index relatif
MOV DX, [SI]+5
MOV CL, [DI]+8
7.
Adressage Base Index relatif MOV CL, [BX][DI]+8
MOV CH, [BX+SI+20]
MOV AL, [BP][DI]+12
MOV AH, [BP+SI+29]
Attention: MOV AL, [SI][DI]+12
; copie DS:BX+9 et DS:BX+9+1 dans CX
; copie SS:BP+5 dans AL
 “BP+5” est appelé adresse effective
; copie DS:SI+5 et DS:SI+5+1 dans CX
; copie DS:DI+8 dans CL
; copie DS:BX+DI+8 dans CL
; copie DS:BX+SI+20 dans CH
; copie SS:BP+DI+12 dans AL
; copie SS:BP+SI+29 dans AH
ou MOV AL, [BX][BP]+12; illégales!!!!!
5 : Modes d’Adressage du mP80x86
Récapitulatif
Modes d’Adressage
Opérande
Segment par défaut
Registre
reg
/
Immédiat
data
/
Direct
[offset]
DS
Registre Indirect
[BX]
[SI]
[DI]
DS
DS
DS
Base relative
[BX] + dépl.
[BP] + dépl.
DS
SS
Index relatif
[DI] + dépl.
[SI] + dépl.
DS
DS
Base Index relatif
[BX][DI] + dépl.
[BX][SI] + dépl.
[BP][DI] + dépl.
[BP][SI] + dépl.
DS
DS
SS
SS
Registres “Segment” et “Offset”
Registres Offset utilisés pour les différents segments
Registres Segment
CS
DS
ES
SS
Registres Offset
IP
SI, DI, BX
SI, DI, BX
SP, BP
EXERCICES
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Si les mP80286 et mP80386SX possède tout deux un bus de données externe de 16-bit, c’est quoi donc
la différence entre eux?
Un mP 32-bit désigne-t-il un cheminement des données internes ou externes?
Est ce qu’un programme écrit pour le mP88/86 peut s’exécuter dans un mP80486?
C’est quoi les différences majeures entre un mP88 et un mP86?
C’est quoi la deuxième méthodologie pour améliorer la puissance de traitement d’un mP, autre
qu’augmenter la fréquence?
C’est quoi les fonctions de BIU et EU?
Parmi ces registres, lesquels sont désignés comme généraux, et quels sont les registres que nous ne
pouvons pas diviser en octets:
a- CS
b- AX
c- DS
d- SS
e- BX
f- DX
g- CX
h- SI
i- DI
Parmi ces instructions, lesquelles ne peuvent être codées dans le mP88/86 :
a- MOV AX, 27
b- MOV AL, 97F
c- MOV DS, 9BF2
d- MOV CX, 397
e- MOV SI, 9516
f- MOV CS, 3490
g- MOV DS, BX
h- MOV BX, CS
i- MOV CH, AX
j- MOV AX, 23FB9
k- MOV CS, BH
l- MOV AX, DL
Si CS=3499H (ensuite 1296H) et IP=2500H (ensuite 100H), trouver:
a- l’adresse logique
b- l’adresse physique
c- les limites du code segment
Si DS=3499H (ensuite 1298H) et Offset=3FB9H (ensuite 7CC8H), trouver:
a- l’adresse physique
b- l’adresse logique de la donnée a rechercher (fetch)
c- les limites du segment de données
En assumant que l’adresse physique d’une location mémoire est 0046H, suggérer des adresses
logiques possibles?
Si une instruction à rechercher est dans l’adresse physique 389F2H et CS=2700H, est ce que la bande
du code segment l’inclut ou pas? Si c’est non, quelle valeur a donner a CS si IP=1282?
13.
La pile est-elle:
a- une section de ROM
c- un registre 16-bit dans la CPU
14.
15.
16.
17.
18.
19.
20.
21.
b- une section de la RAM utilisée pour un stockage temporaire
d- une mémoire quelconque dans la CPU.
Quand une donnée est empilée dans la pile, le pointeur de pile est incrémente ou décrémente? Qu’en
est-il quand la donnée est dépilée?
Choisir une réponse correcte:
ales segments de pile et de code commencent du même point de la mémoire et augmentent vers
le haut.
bles segments de pile et de code commencent des points opposes de la mémoire et
augmentent vers des sens opposes.
cCe n’est pas grave si les deux segments se rencontrent.
C’est quoi l’inconvénient d’avoir la pile dans la CPU comme un grand nombre de registres?
Si SS=2000H (ensuite 1298H) et SP=4578H (ensuite 7CC8H), trouver:
a- l’adresse physique
b- l’adresse logique
c- les limites du segment de pile
Si SP=24FCH, c’est quoi l’adresse offset de la première location de la pile dans laquelle une donnée
peut être empilée?
Assumant que SP=FF2EH, AX=3291H, BX=F43CH, et CX=09, trouver le contenu de la pile et le
pointeur de pile après l’exécution de chacune des instructions: PUSH AX, PUSH BX, PUSH CX.
Pour retrouver le contenu original de chaque registre, du problème 19, montrer la séquence
d’instructions à exécuter. C’est quoi le contenu de SP après chaque instruction exécutée?
Les registres suivants sont utilisés comme Offset. Assumant que le segment défaut est utilisé pour
obtenir l’adresse logique, donner le registre segment associé avec chaque offset:
a- BP
b- DI
c- IP
d- SI
e- SP
f- BX
22.
Montrer le registre segment d’écrasement et celui par défaut (s’il n’y a pas eu d’écrasement)
dans chacun des cas suivants:
a- MOV
SS:[BX], AX
b- MOV
AL, [DI]+BX
c- MOV
DX, DS:[BP+6]
23. C’est quoi l’état des CF, PF, AF, ZF, et SF pour les opérations suivantes:
a- MOV BL, 9FH
ADD BL, 61H
b- MOV DX, 10FFH
INC DX
24. Assumant que les registres ont les valeurs suivantes (en Hex):
CX=1000,
DS=2000, SS=3000, SI=4000,
DI=5000,
BX=6080,
BP=7000, AX=25FF, CX=8791, DX=1299.
Calculer l’adresse physique de la mémoire ou l’opérande est stocke, ainsi que le contenu des locations
mémoires dans chacun des modes d’adressage suivants:
a- MOV [SI], AL
b- MOV [SI+BX+8], AH
c- MOV [BX], AX
d- MOV [DI+6], BX
e- MOV [DI][BX]+28, CX
f- MOV [BP][SI]+10, DX
g- MOV [3600], AX
h- MOV [BX]+30, DX
i- MOV [BP]+200, AX
j- MOV [BP+SI+100], BX
k- MOV [SI]+50, AH
l- MOV [DI+BP+100], AX
25. Donner le mode d’adressage de chacune des instructions suivantes:
a- MOV AX, DS
b- MOV BX, 5678H
d- MOV AL, CH
e- MOV [DI], BX
g- MOV DX, [BP+DI+4]
h- MOV CX, DS
j- MOV AH, [BX+SI+50]
k- MOV BL,[SI]+10
c- MOV CX, [3000]
f- MOV AL, [BX]
i- MOV [BP+6], AL
l- MOV [BP][SI]+12, AX
26. Montrer le contenu des locations mémoire après l’exécution de chacune des instructions suivantes:
a-
MOV BX, 129FH
MOV [1450], BX
DS:1450 …
DS:1451 …
b-
MOV DX, 8C63H
MOV [2348], DX
DS:2348 …
DS:2349 …
Téléchargement