30/01/2016
1
23/08/2010 Khaled Hassine 1
Khaled.hassin[email protected]
Par : Khaled Hassine
DDÉCLARATIONÉCLARATION DESDES
DONNÉESDONNÉES & M& MODESODES
DDADRESSAGESADRESSAGES
30/01/2016 2
Khaled Hassine
Modes d’adressages
Déclarations des variables
Introduction
A retenir
PLAN
30/01/2016
Déclaration des constantes
3Khaled Hassine
Modes d’adressages
Déclarations des variables
Introduction
A retenir
PLAN
30/01/2016
Déclaration des constantes
4Khaled Hassine
30/01/2016
2
Introduction
30/01/2016 Khaled Hassine 5
Modes d’adressages
Déclarations des variables
Introduction
A retenir
PLAN
30/01/2016
Déclaration des constantes
6Khaled Hassine
Déclaration des constantes
Syntaxe :
<Identificateur de Constante> EQU <Value>
<Identificateur de Constante> =<Value>
L’assembleur parcoure le code source et change
chaque occurrence de la constante par sa valeur
Exemple :
A EQU 126
B = 1FH
C EQU 101B
D = 'Hello'
23/08/2010 Khaled Hassine 7
Modes d’adressages
Déclarations des variables
Introduction
A retenir
PLAN
30/01/2016 Khaled Hassine 8
Déclaration des constantes
30/01/2016
3
Directives de déclaration des variables
23/08/2010 Khaled Hassine 9
Directiv
e
Signification
Réserver en mémoire
DB
Define Byte
1 octet
DW
Define Word
2 octets
DD
Define Double
Word
4 octets
DQ
Define Quad
Word
8 octets
Directiv
e
Signification
Interprétation de la
valeur
D
Decimal
décimal (par défaut)
B
Binary
en binaire
O
Octal
en octal
H
Hexadécimal
en hexadécimal
Déclaration des variables
<Identificateur> <Type Elément> [[<Taille > DUP]
[<Valeur initiale> [D/B/O/H]]/ ?/"<Caractères >"]
<Identificateur> de la variable
<Type Elément> : DB, DW, DD, DQ
<Taille> : Taille de la structure répétitive (entier)
DUP : directive de structures répétitives (DUPlicate)
<Valeur initiale> la valeur initiale de chaque variable
' ' : caractères ou chaine de caractères (codés en ASCII),
? : initialisée à 0 (zéro par défaut 0) ,
Si plusieurs valeurs initiales séparées par des virgules,réservation
d'une suite d'emplacements, à chacun est affectée une valeur
23/08/2010 Khaled Hassine 10
DB : Exemple …
23/08/2010 Khaled Hassine 11
Mémoire
Adresse
Contenu
0
7EH
1
1FH
2
05H
3
4CH
41H
5
09H
1AH
FFH
42H
00H
DW et vecteurs : exemple …
23/08/2010 Khaled Hassine 12
Mémoire
Adresse
Contenu
0
00H
1
00H
2
34H
3
12H
4
05H
5
05H
6
FFH
7
0AH
8
FFH
9
0AH
30/01/2016
4
Modes d’adressages
Déclarations des variables
Introduction
A retenir
PLAN
30/01/2016 Khaled Hassine 13
Déclaration des constantes
Le 8086 : Architecture interne
23/08/2010 Khaled Hassine 14
AH AL
BH BL
CH CL
DH DL
Registres généraux
15 70
SI
DI
BP
SP
AX
BX
CX
DX
Registres de Segment
CS
DS
SS
ES
15 0
Registres d'état
et de contrôle
Source index
Destination index
Base pointer
Stack pointer
Flags Registrs
IP
OPERANDES
ALU
CHAINE D’INSTRUCTIONS
GENERATION D’ADRESSES
&
BUS DE CONTROLE
BUS MULTIPLIXE
EXECUTION UNIT (EU) BUS INTERFACE UNIT (BIU)
Accumulateur
Base
Compteur
Données (E/S)
SEQUENCEUR Buffer
Principaux registres du Pentium
23/08/2010 Khaled Hassine 15
Classification des registres du 8086
23/08/2010 Khaled Hassine 16
30/01/2016
5
Adressage des registres
Les deux opérandes sont des registres : from
register to register
N’est pas vraiment un mode d’adressage puisqu’il
n’accède pas à la mémoire
Mode d’adressage très rapide : seul le bus interne est
utilisé
L'opération se fait sur un ou 2 registres
Exemples :
INC AX ; incrémenter le registre AX
MOV AX, BX ; Copier le contenu de BX dans AX
23/08/2010 Khaled Hassine 17
Adressage immédiat
Pas d’accès à la mémoire :
n’est pas vraiment un mode d’adressage
très rapide : seul le bus interne est utilisé
Le deuxième opérande est directement codé dans
l’instruction
Inconvénient : valeur figée dans l'instruction =>
la modifier oblige à modifier le programme.
Exemple :
MOV AH, 30H
23/08/2010 Khaled Hassine 18
La segmentation : synoptique
CS : Code Segment
Segment de code,
Stocke les instructions
DS : Data Segment
Segment de données,
Réservation de la mémoire pour
les variables
ES : Extra Segment
Utilisation spécifique, sur
demande uniquement
Souvent utilisé avec DI
SS : Stack Segment
Segment de pile
UAL de calcul d’adresse
23/08/2010 Khaled Hassine 19
Les registres segments et associations
Chaque registre segment est associé à un ou plusieurs registres d’offset afin de
former une adresse physique réelle :
Une adresse logique est exprimée en hexadécimal sous la forme
SSSS:OOOOoù SSSS est le segment et OOOO est l’offset. La valeur de
l’adresse physique sur 20 bits est :
SSSS0H+OOOOH = SSSS*16+OOOO.
Exemple : pour les instructions, CS:IP est utilisé.
CS = 1111H
IP = AAAAH.
L’adresse de l’instruction pointée par IP est 11110H+ 0AAAAH = 1BBBAH.
Pour les instructions affectant la pile (PUSH, POP, CALL, RET, etc.), SS:SP
est utilisé.
DS:SI et ES:DI sont habituellement utilisés pour travailler sur des tableaux ou
des chaînes de caractères.
23/08/2010 Khaled Hassine 20
Registre segment Registres associés
CS IP
SS SP et/ou BP
DS BX et/ou SI et/ou DI
ES
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !