0% ont trouvé ce document utile (0 vote)
38 vues10 pages

Plan Du Cours: Chapitre 1. Introduction À L'archi. Des Ordi

maths

Transféré par

saad doudou
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
38 vues10 pages

Plan Du Cours: Chapitre 1. Introduction À L'archi. Des Ordi

maths

Transféré par

saad doudou
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Plan du cours

Chapitre 1. Introduction à l’archi. des ordi.


Chapitre 2. Unités fonctionnelles
Chapitre 4. Présentation du μp 8086 et environnement Emu8086.
Chapitre 5. Jeu d’instruction du μp 8086
Chapitre 5. Modes d’adressage
Chapitre 6. Variables et sauts
Chapitre 7. Procédures et interruptions
Chapitre 8. Application: accès aux entrées sorties
89

Chapitre 5 . Modes d’adressage

Dans ce chapitre

I. Adressage immédiat et par registre

II. Adressage direct

III. Adressage indirect

IV. Taille de la donnée mémoire

90

1
I. Adressage immédiat et
par registre

Chapitre 5. Modes d’adressage


I. Adressage immédiat et par registre
Présentation

Soit le programme:
MOV AX, 200h Adressage immédiat
MOV BX, 10101100b Adressage immédiat
ADD AX,BX Adressage registre
MUL BL Adressage registre
Jusqu'à présent, les opérandes utilisées sont:
• Registre ou valeur immédiate
• Aucun contenu mémoire

Nous allons présenter de nouveaux modes qui manipulent les


données en mémoire.

92

2
II. Adressage direct

Chapitre 5. Modes d’adressage


II. Adressage direct
Présentation
MOV AX, [243] ; Charger le contenu de la mémoire d'adresse
DS:243 dans AX
MOV [123], AX ; Charger le contenu de AX dans la mémoire
d'adresse DS:123
MOV AX, SS:[200] ; Charger le contenu de la mémoire SS:200
dans AX

▪ Utilisé lorsqu’un opérande se trouve en mémoire.


▪ L’adresse de la case mémoire RSeg:Offset est utilisée directement dans
l’instruction.
▪ L’adresse offset de l’adresse RSeg:Offset doit être placée entre [ ].
▪ Si le segment n’est pas précisé, c’est DS qui est pris par défaut.

94

3
III. Adressage indirect
1. Adressage basé
2. Cas général

Chapitre 5. Modes d’adressage


III. Adressage indirect
1. Adressage basé
MOV [BX], AX ; Charger le contenu de AX dans la mémoire
d'adresse DS:BX
MOV AX, ES:[BX] ; Charger le contenu de la mémoire ES:BX dans
AX
MOV AX, [DI] ; Charger le contenu de la mémoire d'adresse
DS:DI dans AX
MOV AX, [BP] ; Charger le contenu de la mémoire d'adresse
????? dans AX
▪ Utilisé lorsqu’un opérande se trouve en mémoire.
▪ L’offset de l’adresse se trouve dans l’un des 4 registres d’offset BX, BP, SI ou DI.
▪ L’adresse de la case mémoire est donnée par RSeg:ROff.
▪ L’adresse offset de l’adresse RSeg:ROff doit être placée entre [ ].
▪ Si le RSeg n’est pas précisé, c’est le segment par défaut qui sera utilisé selon le
tableau suivant:

96

4
Chapitre 5. Modes d’adressage
III. Adressage indirect
1. Adressage basé
MOV [BX], AX ; Charger le contenu de AX dans la mémoire
d'adresse DS:BX
MOV AX, ES:[BX] ; Charger le contenu de la mémoire ES:BX dans
AX
MOV AX, [DI] ; Charger le contenu de la mémoire d'adresse
DS:DI dans AX
MOV AX, [BP] ; Charger le contenu de la mémoire d'adresse
SS:BP dans AX
▪ Utilisé lorsqu’un opérande se trouve en mémoire.
▪ L’offset de l’adresse se trouve dans l’un des 4 registres d’offset BX, BP, SI ou DI.
▪ L’adresse de la case mémoire est donnée par RSeg:ROff.
▪ L’adresse offset de l’adresse RSeg:ROff doit être placée entre [ ].
▪ Si le RSeg n’est pas précisé, c’est le segment par défaut qui sera utilisé selon le
tableau suivant:

97

Chapitre 5. Modes d’adressage


III. Adressage indirect
2. Cas général
DS ES SS
▪ DS : Deplace ▪ ES : Deplace ▪ SS : BP + Deplace
▪ DS : BX ▪ ES : BX ▪ SS : BP + SI
▪ DS : SI ▪ ES : SI ▪ SS : BP + DI
▪ DS : DI ▪ ES : DI ▪ SS : BP + SI + Deplace
▪ DS : BX + Deplace ▪ ES : BX + Deplace ▪ SS : BP + DI + Deplace
▪ DS : SI + Deplace ▪ ES : SI + Deplace
▪ DS : DI + Deplace ▪ ES : DI + Deplace
▪ DS : BX + SI ▪ ES : BX + SI
▪ DS : BX + DI ▪ ES : BX + DI
▪ DS : BX + SI + Deplace ▪ ES : BX + SI + Deplace
▪ DS : BX + DI + Deplace ▪ ES : BX + DI + Deplace
Deplace est un nombre (+,-) d’octets qui correspond à un déplacement en mémoire.
Le segment DS est le segment par défaut => n’est pas nécessaire de l’indiquer
98

5
IV. Taille de la donnée mémoire

Chapitre 5. Modes d’adressage


IV. Taille de la donnée mémoire
1. WORD PTR , BYTE PTR
Si la donnée mémoire pointée est :

▪ Un octet, nous la faisons précéder par « BYTE PTR » ou « b. »

▪ Un mot 16 bits: nous la faisons précéder par « WORD PTR » ou « w. »

Exemple:

MOV WORD PTR [BX], AX ; Charger le contenu de AX dans la mémoire


d'adresse DS:BX de taille 16 bits
MUL ES: [DI+10] ; Multiplier ??
AL par le contenu de la mémoire ES:DI+10
de taille 8 bits

100

6
Chapitre 5. Modes d’adressage
IV. Taille de la donnée mémoire
1. WORD PTR , BYTE PTR
Si la donnée mémoire pointée est :

▪ Un octet, nous la faisons précéder par « BYTE PTR » ou « b. »

▪ Un mot 16 bits: nous la faisons précéder par « WORD PTR » ou « w. »

Exemple:

MOV WORD PTR [BX], AX ; Charger le contenu de AX dans la mémoire


d'adresse DS:BX de taille 16 bits

MUL BYTE PTR ES: [DI+10] ; Multiplier AL par le contenu de la mémoire


ES:DI+10 de taille 8 bits
MUL WORD PTR ES: [DI+10] ; Multiplier AX par le contenu de la mémoire
ES:DI+10 de taille 16 bits

101

Plan du cours

Chapitre 1. Introduction à l’archi. des ordi.


Chapitre 2. Unités fonctionnelles
Chapitre 4. Présentation du μp 8086 et environnement Emu8086.
Chapitre 5. Jeu d’instruction du μp 8086
Chapitre 5. Modes d’adressage
Chapitre 6. Variables et sauts
Chapitre 7. Procédures et interruptions
Chapitre 8. Application: accès aux entrées sorties
102

7
Chapitre 6 . Variables et sauts

Dans ce chapitre

I. Les variables
II. Les sauts

103

I. Les variables
1. Les constantes
2. Les variables simples
3. Les variables tableaux
4. SEG, OFFSET et LEA , LDS, LES

8
Chapitre 6. Variables et sauts
I. Les variables
1. Les constantes

▪ Constantes numériques
➢ 1898 base 10
➢ 10101010b base 2
➢ 7645o base 8
➢ 0F6Ah base 16
▪ Constantes chaînes de caractères

➢ 'Cours SMI' , 'l''année'

▪ Déclarer une constante

➢ Syntaxe: nom EQU constante

➢ Exemple: MAX EQU 10

105

Chapitre 6. Variables et sauts


I. Les variables
2. Les variables simples
▪ Une variable est un emplacement mémoire utilisable dans un programme
après sa déclaration par son nom ou son adresse.

▪ Un nom correcte :

➢ Contient : chiffres, lettres et '_'

➢ Ne commencer jamais par un chiffre

➢ Ne contient aucun espace

➢ Différent des mots clé du langage


▪ Après création, le nom d’une variable désigne l’emplacement mémoire
contenant la valeur de la variable.
▪ Exemple:
MOV AX,V1 ; charger dans AX le contenu de l’adresse de la variable V1
; si V1 est l’emplacement mémoire d’offset : 0100h
; alors  MOV AX,[0100h]
106

9
Chapitre 6. Variables et sauts
I. Les variables
2. Les variables simples

Création avec DB et DW
▪ Déclarer une variable c’est réserver un emplacement mémoire pour y stocker
la valeur de cette variable.

▪ Une variable peut pointer des données sur:

➢ Un octet (8 bits)=> on utilise l’instructions DB (Define Byte)

➢ Un mot (16 bits)=> on utilise l’instructions DW (Define Word)


▪ Exemples:
V1 DB 28
c1 DB 'y' ; code du caractère « y »
un_octet DB 23h ; la valeur est un octet
chaine DB 'cours info', 20, '$'
deux_octets DW 2365h ; la valeur est un mot 16 bits
mot1 DW 6789
Mot2 DW (2*6+64)/77 ;!! Constantes, pas de variables

107

Chapitre 6. Variables et sauts


I. Les variables
3. Les tableaux
▪ Comme en langage C par exemple, un tableau est une liste de variables qui
sont associées à un même nom et utilisables avec ce nom + un déplacement.
▪ Exemples de créations:
Tab_int1 DB 1, 2, 3, 4, 5 ; tableau de 5 octets
Tab_int2 DB 10 dup (2) ; tableau de 10 octets initialisés à 2
Tab_int3 DW 20 dup ( ?) ; tableau de 20 mots non initialisés
Tab_char1 DB 'I' , 'N' , 'F' , 'O' , '$' ; tableau de caractères = chaîne
Tab_char2 DB 'INFO$' ; équivalent au précédent
; $ pour marquer la fin de la chaîne
▪ Exemples d'utilisation [offset] :

Erreur car la donnée


mémoire est de taille
incompatible

108

10

Vous aimerez peut-être aussi