Вы находитесь на странице: 1из 21

1/21

Chapitre 1 : Les microprocesseurs 80x86

Section 1.1: Rappel historique Bref sur la famille 80x86


Section 1.2: A l’intérieur du mP 8088/8086
Section 1.3: Introduction a la programmation Assembleur
Section 1.4: Segmentation des programmes
Section 1.5: Modes d’Adressage

Systèmes à microprocesseurs
2/21

Objectives
Les objectifs de ce chapitre sont:
- Décrire la famille Intel des mP de 8085 a 80486, en termes des tailles de
bus et mémoire physique.
- Expliquer les fonctions de EU (Unité d’Exécution) et BIU (Unité Interface
Bus).
- Décrire la notion de pipeline et comment elle permettra de rendre le
fonctionnement des CPUs plus rapide.
- Lister les registres du mP8086.
- Donner quelques exemples simples utilisant les instructions MOV et
ADD, et décrire l’effet de ces instructions sur leurs opérandes.
- Expliquer la différence entre une adresse logique et une adresse
physique.
- Décrire la convention de sauvegarde « Little Endian » dans les mP80x86.
- Expliquer la notion de pile et ses instructions PUSH et POP.
- Lister les bits du registre FLAG, leurs utilités, et monter l’effet de
l’instruction ADD sur ce registre.
- Lister les modes d’adressage du mP8086.
Systèmes à microprocesseurs
3/21

Section 1.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. Intel est le pionnier des mP
à base de pipeline.
- É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.
Systèmes à microprocesseurs
4/21

Section 1.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. A contrario, Apple’s Macintosh, qui a un
système fermé, a bloqué toute tentative de clonage par d’autres manufacturiers.

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

Systèmes à microprocesseurs
5/21

Section 1.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 co-
processeurs 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.

Systèmes à microprocesseurs
6/21

Section 1.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 avec Fetch 2 Execute 2
Pipeline
Execution Sans Pipeline mP 80x86 Fetch 3 Execute 3
mP8085

Systèmes à microprocesseurs
7/21

Section 1.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), AX15 AX14 AX8 AX7 AX1 AX0
8 bits ou (BH, BL),
16-bits
(CH, CL), AH7 AH6 AH1 AH0
(DH, DL),
AL7 AL6 AL1 AL0
Pointeur SP, BP

Index SI, DI

16-bits Segment CS, DS,


SS, ES
Instruction IP
IP15 IP14 IP1 IP0
Flag FR

Systèmes à microprocesseurs
8/21

Bloc Diagramme de du mP 8088/86


EXECUTION UNIT (EU) BUS INTERFACE UNIT (BIU)
15 7 0
AX AH AL Accumulateur Registres de Segment
BX BH BL Base 15 0
CX CH CL Compteur CS
DX DH DL Données (E/S) DS
SS
Source index SI
DI ES
Destination index
Base pointer BP IP
Stack pointer SP

Registres généraux
BUS MULTIPLIXE GENERATION D’ADRESSES
&
BUS DE CONTROLE

OPERANDES

SEQUENCEUR CHAINE D’INSTRUCTIONS

ALU Buffer

Registres d'état
FR et de contrôle

Systèmes à microprocesseurs
9/21
Section 1.3 : Introduction à la
programmation Assembleur
Programmer vite et
moins d’erreurs

RAM
MNEMONIQUES (facile a se rappeler)
RAM
1400h 10110000 B0h
MOV AL, 21h
00100001 21h
Meilleure programmation
00000100 04h Bonne connaissance
ADD AL, 42h des registres, leur
01000010 Bin 42h
taille et de la CPU
10100111 Hex A7h en générale

00011000 18h ADD AL, [1800h]


00000000 00h

1407h 11110100 F4h HALT

Langage Programme Langage Langage


“MACHINE” “ASSEMBLEUR” “C, Pascal, Basic”
“ASSEMBLEUR”
(Code Objet) (Langage bas-niveau) (Langage haut-niveau)
MASM (Microsoft), DEBUG,
TASM (Turbo Borland) (Code Source)
Programme Pas besoin de
“COMPILATEUR” connaître la CPU

Systèmes à microprocesseurs
10/21
Section 1.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 ; copie opérande source  destination
MOV CL, 55h ; déplacer 55h vers le registre CL.
Attention: spécifie h pour MASM sinon décimal. Avec DEBUG pas besoin, tout HEX
MOV DL, CL ; copie le contenu du registre CL vers le registre DL
MOV AH, DL ; copie le contenu du registre DL vers le registre AH

Avec les registres 16-bits:

MOV CX, 468Fh ; déplacer 468Fh vers le registre CX (CH = 46h et CL = 8Fh)
MOV AX, CX ; copie le contenu du registre CX vers le registre AX
MOV DS, AX ; copie le contenu du registre AX vers le registre DS
MOV BX, 9 ; copie la donnée 0009h vers le registre BX  BL = 09h et BH = 00h

Attention!!!
MOV AL, CX ; erreur, les registres n’ont pas la même taille
MOV AL, 2345h ; erreur, la donnée et le registre AL n’ont pas la même taille
MOV FR, AX ; erreur, on on ne déplace pas le contenu du registre d’état et de contrôle
MOV CS, 3D15h ; erreur, les données ne peuvent être déplacées aux registres segments
Solution:
MOV AX, 3D15h
MOV CS, AX

Systèmes à microprocesseurs
11/21
Section 1.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.
Le format des instructions assembleur, leur description, leur utilisation, etc. se trouvent dans les manuels du
constructeur (Voir Appendice B du livre).

Systèmes à microprocesseurs
12/21
Section 1.4 : Introduction aux Segments du
programme
00000h FFFFFh (= 220 =1Mo)
CS DS ES 64Ko
RAM 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 Adresse Segment (CS, DS, SS, ES) 0000


(sur un
Pour éviter d’utiliser des registres de 20-bits
pour stocker et calculer les adresses + Adresse Offset (Effective) 16 bits segment
de 64 Ko)

(adresse
Adresse logique = Adr. Seg. : Adr. Offset Adresse Physique 20 bits
mémoire)
Adresse physique = (Adr. Seg.)0h + Adr. Offset

Exemple: Pour exécuter un programme, le mP8086 « fetch » les instructions à partir de CS


CS : IP (2500h : 95F3h)  Adr. Phy. = 25000h + 95F3h = 2E5F3h ici Offset = IP
DS : DI (7521h : 85FBh)  Adr. Phy. = 75210h + 85FBh = 7D81Bh ici Offset = DI
Systèmes à microprocesseurs
13/21

Section 1.4 : Segments du programme


Adresse Logique et Adresse Physique pour le “Segment Code”
RAM
Adresse Langage Langage Adresse Adresse Contenu
Logique Machine Assembleur Logique Physique du “Code
(CS:IP) (Opcode & Operand) (MNEM. & Operand) (CS:IP) (“CS0”h+IP) Machine”
1132:0100 B057 MOV AL, 57 1132:0100 11420 B0

1132:0102 B686 MOV DH, 86 1132:0101 11421 57


1132:0102 11422 B6
1132:0104 B272 MOV DL, 72
1132:0103 11423 86
1132:0106 89D1 MOV CX, DX

1132:0108 88C7 MOV BH, AL

1132:010A B39F MOV BL, 9F

1132:010C B420 MOV AH, 20

1132:010E 01D0 MOV AX, DX


1132:0112 11432 05
1132:0110 01D9 MOV CX, BX
1132:0113 11433 35
1132:0112 05351F MOV AX, 1F35
1132:0114 11434 1F
Logiciel “Assembleur”
Systèmes à microprocesseurs
14/21

Section 1.4 : Segments du programme


Adresse Logique et Adresse Physique pour le “Segment Données”

Exemple: Additionner 5 Octets de données: 25h, 12h, 15h, 1Fh, et 2Bh


MOV AL, 00h ; initialiser le registre AL
ADD AL, 25h ; AL = AL + 25h
ADD AL, 12h ; AL = AL + 12h
ADD AL, 15h ; AL = AL + 15h
ADD AL, 1Fh ; AL = AL + 1Fh
ADD AL, 2Bh ; AL = AL + 2Bh

- Le code et les Données sont mixés ensemble. Si les données changent, le code sera retaper pour
chaque instruction  le mP8086 réserve un segment pour les données: “Segment Données”.

- Les registres CS, IP sont utilisés pour les adresses segment et offset du “Seg. Code”, les registres DS
et (BX, SI ou DI) sont utilisés pour les adresses segment et offset du “Seg. Données”.

Pourquoi DS?: Si Offset = 0200h Adr. Log. Adr. Phy.


MOV AL, 0 ; clear le registre AL DS:0200 DS0h+0200 25h
ADD AL, [0200] ; AL = AL + [DS:200]  Attention: pas ADD AL, 0200 DS:0201 DS0h+0201 12h
ADD AL, [0201] ; AL = AL + [DS:201] DS:0202 DS0h+0202 15h
ADD AL, [0202] ; AL = AL + [DS:202]
DS:0203 DS0h+0203 1Fh
ADD AL, [0203] ; AL = AL + [DS:203]
ADD AL, [0204] ; AL = AL + [DS:204] DS:0204 DS0h+0204 2Bh
Avantage: Changer uniquement les données dans DS
Systèmes à microprocesseurs
15/21

Section 1.4 : Segments du programme


Adresse Logique et Adresse Physique pour le “Segment Données”
Pourquoi un pointeur d’Offset?:
Si les données sont à déplacer dans une autre adresse offset  le code sera retapé pour
chaque instruction également un registre (tels BX, DI ou SI) pour loger l’adresse offset.

MOV AL, 0 ; clear le registre AL


MOV BX, 0200h ; BX  l’adresse Offset du 1er Octet RAM
ADD AL, [BX] ; AL = AL + [BX: 1er Octet] NOTE IMPORTANTE:

B INC BX ; BX+1  pointe sur le prochain Octet. MOV AX, 35F3h INTEL 1500 F3
O ADD AL, [BX] ; AL = AL + [BX: 2eme Octet] MOV [1500h], AX 1501 35
U INC BX ; BX+1  pointer sur le prochain Octet
C ADD AL, [BX] ; AL = AL + [BX: 3eme Octet]
L INC BX ; BX+1  pointer sur le prochain Octet DS:1500 = F3 et DS:1501 = 35
E ADD AL, [BX] ; AL = AL + [BX: 4eme Octet]  Little Endian (Intel)
INC BX ; BX+1  pointer sur le prochain Octet
DS:1500 = 35 et DS:1501 = F3
ADD AL, [BX] ; AL = AL + [BX: dernier Octet]  Big Endian (Motorola)
0450h
NOTE:
1. Si l’Offset change, une seule instruction est à changer dans le code: MOV BX, 0200h.
2. Améliorer le code  deux instructions sont répétés 4 fois avec la notion de boucle (Registre Flag).
3. ES : Segment Extra (même que DS) est surtout utilisé pour les opérations chaînes de caractères.

Systèmes à microprocesseurs
16/21

Section 1.4 : Segments du programme


Adresse Logique et Adresse Physique pour le “Segment de Pile”

- Nombre limité de registres dans la CPU. Economie de transistors  une portion de la RAM est
réservée au “segment de pile” (=100s registres)  stocker l’information temporairement.
- Son inconvénient est son temps d’accès, beaucoup plus long par rapport aux registres, car elle
se trouve à l’extérieur de la CPU.
- De même que CS et PI  “Segment de Code”, SS et SP  “Segment de Pile”. Ces registres RAM
sont chargés avant toute instruction permettant d’accéder la pile.
IP
- Tout les registres des mP80x86 peuvent être stocker dans la pile (PUSH) et ramener vers la
CS
CPU de la pile (POP), sauf les registres (CS, DS, SS, ES) et SP.
- Le registre SP pointe sur le top (la dernière location de la pile pour le 80x86) de la pile. Quand une
donnée est stockée, il décrémente et vice versa.
- Le registre à stocker/ramener dans/de la pile doit être de 16 bits: PUSH AX (PUSH AL). P
P
U
O
S
P
H
Adresse Logique et Adresse Physique pour le “Segment de Pile”: SS:SP  SS0h + SP SS
SP
Notes:
1. C’est la responsabilité du DOS d’assigner des valeurs à SS et SP (Gestion de la mémoire par DOS)
2. BP peut être aussi utilisé comme Adresse Offset pour SS dans certaines applications.

Systèmes à microprocesseurs
17/21

Section 1.4 : Segments du programme


Exemple: “Segment de Pile” SP = 1236h AX = 24B6h DI = 85C2 DX = 5F93h

CS:A290 PUSH AX CS
CS:A291 PUSH DI
CS:A292 PUSH DX
CS CS:A293 POP CX
CS:A294 POP DX DS
CS:A295 POP BX

SS
SS:1230
XX
SS:1231 93 93 93 93
SS:1232 5F 5F 5F 5F
SS SS:1233 C2 C2 C2 C2 C2
SS:1234 85 85 85 85 85
XX B6
SS:1235 B6 B6 B6 B6
XX B6
24 24 24 24
SS:1236 24 24

RAM
PUSH AX PUSH DI PUSH DX POP CX POP DX POP BX

CX = 5F93 DX = 85C2 BX = 24B6


SP = 1236 SP = 1234 SP = 1232 SP = 1230 SP = 1232 SP = 1234 SP = 1236

Systèmes à microprocesseurs
18/21

Mémoire d’IBM PC et Registre Flag


Mémoire d’IBM PC (mP 8088/86)
La gestion de la mémoire est laissé au système DOS. Les valeurs de CS, DS 00000h
et SS utilisés dans les exemples peuvent être différentes de celles obtenus
par les utilisateurs des PCs. RAM
Registre Flag (d’État et de Contrôle) 640Ko
Un registre de 16 bits, certains sont réservés ou indéfinis par Intel. 6 bits
(C, P, A, Z, S et O) sont des drapeaux de condition indiquant quelque condition
issu de l’exécution d’une instruction.
9FFFFh
A0000h
R R R R OF DF IF TF SF ZF U AF U PF U CF
Video RAM
Exemple MOV BX, AAAAh 128Ko BFFFFh
ADD BX, 5556h  (CF, PF, AF, ZF)  1, SF  0. C0000h
Utilité de ZF Libre
MOV CX, 05
MOV BX, 0200h
ROM Adap.
MOV AL, 00 256K F0000h
ADD_BL ADD AL, [BX] BIOS
INC BX FFFFFh
DEC CX (= 220 =1Mo)
PC allumé: tests, rapports et erreurs
JNZ ADD_BL ; ZF = ? sur les périph.

Systèmes à microprocesseurs
19/21

Section 1.5 : Modes d’Adressage du mP80x86


A - La CPU peut adresser des opérandes (Données) de plusieurs manières, appelés Modes d’Adressage .
R C
E C
- Leur nombre est déterminé une fois le mP conçu et ne peut être changé. Les mP80x86 en possède 7:
G É Registre, Immédiat, Direct, Indirect par registre, Base relative, Indexe relative et Base indexe relative.
I S
S 1. Adressage par Registre MOV DX, BX ADD AL, AH
T R
R A 2. Adressage Immédiat MOV AX, 2550h ADD BL, 40h
E P
S I
Note: ce mode est utilisé pour charger une donnée dans un registre quelconque sauf FR et
D (CS, DS, S, ES) MAIS  MOV AX, 2550h MOV DS, AX
E
3. Adressage Direct MOV DL, [2550] ;contenu de DS:2500 dans DL
A
4. Adressage Indirect MOV AL, [BX] ; contenu de DS:BX dans AL
M C
É Notes: 1. Attention: différent de (MOV AL, BX) ; BX  AL (erreur!!  taille des registres)
C
M 2. MOV [DI], AH (copie un octet) et MOV [SI], AX (copie un mot avec convention little Endian)
É
O
I S 5. Adressage Base relative MOV CX, [BX]+9 ; copie DS:BX+9 et DS:BX+9+1 dans CX
R MOV AL, [BP]+5 ; copie SS:BP+5 dans AL
E Note: MOV AL,[BP+5] ou MOV AL,5[BP]  “BP+5” est appelé adresse effective
L
6. Adressage Index relatif MOV DX, [SI]+5 ; copie DS:SI+5 et DS:SI+5+1 dans CX
E
MOV CL, [DI]+8 ; copie DS:DI+8 dans CL
N
7. Adressage Base Index relatif MOV CL, [BX][DI]+8 ; copie DS:BX+DI+8 dans CL
T MOV CH, [BX+SI+20] ; copie DS:BX+SI+20 dans CH
MOV AL, [BP][DI]+12 ; copie SS:BP+DI+12 dans AL
MOV AH, [BP+SI+29] ; copie SS:BP+SI+29 dans AH
Attention: MOV AL, [SI][DI]+12 ou MOV AL, [BX][BP]+12; illégales!!!!!

Systèmes à microprocesseurs
20/21

Section 1.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] DS
[SI] DS
[DI] DS
Base relative [BX] + dépl. DS
[BP] + dépl. SS
Index relatif [DI] + dépl. DS
[SI] + dépl. DS
Base Index relatif [BX][DI] + dépl. DS
[BX][SI] + dépl. DS
[BP][DI] + dépl. SS
[BP][SI] + dépl. SS

Systèmes à microprocesseurs
21/21

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

Écrasement du segment par défaut

Instruction Segment utilisé Segment par default


MOV AX, CS:[BP] CS:BP SS:BP
MOV DX, SS:[SI] SS:SI DS:SI
MOV AX, DS:[BP] DS:BP SS:BP
MOV CX, ES:[BX]+12 ES:BX+12 DS:BX+12
MOV SS:[DI]+32, AX SS:DI+32 DS:DI+32

Systèmes à microprocesseurs

Вам также может понравиться