Académique Documents
Professionnel Documents
Culture Documents
Ex :
Vrai EQU 1 ; « Vrai » est l’identificateur qu’assigne la valeur 1
Ex :
La valeur spécifiée peut être une expression qui sera évaluée lors de l’ASSEMBLAGE
1 FFFh (hexadecimale)
Les variables sont des ZONES MEMOIRES qui sont RESERVEES lors de l’Assemblage (avec
des Pseudo-instruction) . L’adresse des Zones Memoires ( SEGMENT:OFFSET ) est attribuée par
l’Ordinateur
La Pseudo-instruction DB
Cette instruction définit et initialise des zones Mémoires sur un BYTE ou OCTET
Cette instruction sert à initialiser le Contenu des zones Mémoires avec des valeurs
NUMERIQUES ou des CARACTERES.
L’Adresse de ces Zones Memoires est définie par l’ordinateur ( SEGMENT :OFFSET) répérée
par l’IDENTIFICATEUR
XYZ DB 2, 3,4
Autre DB ?
Table DB 5 DUP ( ?)
Ex6 : Définition d’une Table de 20 Eléments (le premier initialisé à 0, le second à 1, le troisième
à 0 , le quatrième à 1, etc…)
L’Assembleur répète les valeurs (…) jusqu’à ce que la Table soit entièrement remplie
.
La Pseudo-instruction DW
Cent DW 1
Ex2 : Définition d’une zone de 3 Eléments de type Word.
Table W DW 5 DUP ( ?)
Ex :
Les différents codes et les chaines de caractères constituant le MESSAGE seront séparées par des
VIRGULES (, ).
Ex :
Dans ces exemples les nombres 13, 10 et 07 représente les codes ASCII des caractères.
TP
N.B : On verra plus tard après l’Etude du Chapitre des INSTRUCTIONS pour pouvoir écrire un PGM en
ASSEMBLEUR ;
Frappons :
-a 1
DEBUG affiche alors une adresse et nous pouvons taper une instruction suivie de
Ex :
6800 : 1 DB 2
6800 : 11 DB 3
6800 : 12 DB 4
6800 : 13 DB ‘HELLO’
68 : 18 DB 5
68 : 19
Dans l’Ex :
68 : 13 est l’ensemble d’une variable CHAINE DE CARACTERE initialisée à ‘HELLO’ (la taille de
cette variable est de 5 Bytes).
-d 1
Affichage obtenu :
68BF : 1 02 03 04
48 45 4C 4C 4F - 05 …………
4F444 4F
68BF : 1 ……………………………………………………………………………….
Les 3 premiers bytes contiennent respectivement 2, 3 et 4 (02 03 04)
Les 5 bytes suivants contient les codes ASCII des caractères du mot ‘HELLO’ (48 45 4C 4C 4F)
Remarque :
Aucune séparation entre les données. Elles sont mises en Mémoire les unes derrière les autres.
Il appartient au PGM qui utilise une donnée de spécifier son ADRESSE et le nombre de BYTES
qu’elle occupe.
-U 1
NB : C’est le PGM qui doit s’occuper de distinguer les Données et les Instructions
Chapitre IV LES MODES D’ADRESSAGE
Les DONNEES manipulées par l’Instruction (ces données sont dans les REGISTRES ou en MEMOIRE)
-Une Constante
L’intruction ( MOV reg , operande ) veut dire : Le contenu de ‘Opérande’ est transféré dans ‘reg’
SEGMENT : OFFSET
Ex : Au lieu d’écrire :
MOV BX,501
MOV SI,505
MOV AX , DS : [BX]
MOV AX , DS : [SI+2]
……..
On écrit :
MOV AX , [BX]
MOV AX , [SI+2] (DS par défaut)
Mais le programmeur peut spécifier lui-même un Registre de SEGMENT (on parlera de PREFIXE
de SEGMENT).
MOV DS,13AD
MOV AX , DS : [BX]
NB : On verra que les chaines de caractères sont traitées de manière tout à fait particulière.
Ex :
Id1 DB 2 ; définit une zone Memoire de 1 Byte , contenant le Nombre 2
Id2 DW 5 ; définit une zone Mémoire de 2 Bytes (word), contenant le Nb 5
……..
; Registre mémoire
;Mémoire registre
NB: -Avec DEBUG Id1 et Id2 seront les Numeros d’Offset en Mémoire ou l’on a enregisté le
Nombre 2 et le Nombre 5
Soit le Nombre 2 est enregisté en mémoire à l’Adresse d’IOffset 500
Et le Nombre 5 est enregistré en mémoire à l’Adresse d’Offset 501
Ex : MOV AH , [500]
MOV BX , [501]
- MOV AH , Id2 ; Il y a Erreur car AH est un registre à 8 bits or la donnée est sur 16 bits ( Word).
DS : [BX]
BX ;Registre de base Segment offset
[BX] représente le contenu de la zone Mémoire dont la valeur de l’ Offset est dans BX.
Ex:
MOV BX , 8 ; BX 8
MOV AX , [BX] ; AX Contenu de la zone Memore à l’@
DS: 8
Ex :
Id1 DB 2 ;définit une zone Mémoire de 1 Byte contenant la valeur 2
Id2 DW 5 ;définit une zone Mémoire de 2 Bytes (word) contenant la val 5
………
NB :
MOV BX,offset Id2 : ‘offset’ demande à l’Assembleur de mettre dans BX l’offset emplacement
Mémoire de la variable Id2
Adresse en Mémoire ---- SEGMENT : OFFSET
Tandis que (MOV BX , Id2) installe dans BX le contenu en Mémoire de la variable Id2 !
BP : Registre utilisé pour accéder aux données de la PILE (Appel sousPgm CALL)
SS : Registre de Segment pour la PILE
Ex :
MOV BP , FFFE h
MOV AX , [BP] ; AX contenu de la zone mémoire à l’adresse SS : 0FFFEh
DS : [SI]
Segment offset
Mode d’adressage :
- Principalement utilisé pour les CHAINES DE CARACTERES
- Pour ISOLER un Elément de Tableau
Ex1 :
MOV SI,
SI : offset Source
Index
MOV AX, [SI] ; AX contenu de la zone mémoire à l’Adresse DS :
Ex2 :
MOV AH, 12
DI : offset MOV DI,
Destination Index MOV [DI], AH ; contenu de la zone memoire à l’adresse DS: contenu de AH
La Base est DS
Adresse = DS : BX + SI
Adresse = DS : DI + BX
Segment offset
Ex1 :
MOV BX, 2
MOV SI, 5
MOV AH, [BX] [SI] ; AH Contenu de la Mémoire à l’Adresse DS : 2+5 ou DS : 7
Ex2 :
Table DB 20 DUP ( ?) ; définit un Tableau de 20 Eléments
La Base est SS
Adresse = SS : BP + SI
Adresse = SS : BP + DI
Segment offset
Ex1 :
MOV BP , 2
MOV SI , 5
MOV AH, [BP] [SI] ; AH Contenu de la Mémoire à l’Adresse SS : 7 ou 2+5)
(Direct ou Immédiat)
Ex :
Id1 DW 5 dup ( ?) ; définit une zone de 2 bytes (w) avec 5 El.
…………
MOV BX, 2
MOV AX, Id1 [BX] ; AX 3ème Elément du Tableau Id1 ou (BX = 2) 0,1,2 (3e El)
donnée
Ex :
MOV SI, 4
MOV AX, 1 [SI] ; AX contenu de la zone mémoire à l’adressse DS : 5 ou (4+1)
Ou [SI + 1]