0% ont trouvé ce document utile (0 vote)
23 vues15 pages

La Programmation en Assembleur Du Microprocesseur 8086

Transféré par

bezioui
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 PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
23 vues15 pages

La Programmation en Assembleur Du Microprocesseur 8086

Transféré par

bezioui
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 PPTX, PDF, TXT ou lisez en ligne sur Scribd

La programmation en assembleur du

microprocesseur 8086
Les instructions peuvent être classées en
groupes
• instructions de transfert de données ;
• instructions arithmétiques ;
• instructions logiques ;
• instructions de branchement ...
Les instructions de transfert
• Elles permettent de déplacer des données
d’une source vers une destination :
– registre vers mémoire ;
– registre vers registre ;
– mémoire vers registre.

Remarque : le microprocesseur 8086 n’autorise pas les


transferts de mémoire vers mémoire (pour ce faire, il
faut passer par un registre intermédiaire).
MOV destination,source
• Syntaxe : MOV destination,source
Il existe différentes façons de spécifier
l’adresse d’une case mémoire dans une
instruction : ce sont les modes d’adressage.
Exemples de modes d’adressage simples

• • mov ax,bx : charge le contenu du registre


BX dans le registre AX. Dans ce cas, le
transfert se fait de registre à registre :
adressage par registre ;
• mov al,12H : charge le registre AL avec la
valeur 12H. La donnée est fournie
immédiatement avec l’instruction : adressage
immédiat.
• mov bl,[1200H] : transfère le contenu de la
case mémoire d’adresse effective (offset) 1200H
vers le registre BL. L’instruction comporte
l’adresse de la case mémoire où se trouve la
donnée : adressage direct.
• L’adresse effective représente l’offset de la case
mémoire dans le segment de données (segment
dont l’adresse est contenue dans le registre DS) :
segment par défaut.
• On peut changer le segment lors d’un
adressage direct en ajoutant un préfixe de
segment, exemple : mov bl,es :[1200H]. On
parle alors de forçage de segment.
• Remarque : dans le cas de l’adressage immédiat de la
mémoire, il faut indiquer le format de la donnée : octet
ou mot (2 octets) car le microprocesseur 8086 peut
manipuler des données sur 8 bits ou 16 bits.
• Pour cela, on doit utiliser un spécificateur de format :
– mov byte ptr [1100H],65H : transfère la valeur 65H
(sur 1 octet) dans la case mémoire d’offset 1100H ;
– mov word ptr [1100H],65H : transfère la valeur
0065H (sur 2 octets) dans les cases mémoire d’offset 1100H
et 1101H.
Modes d’adressage évolués
• adressage basé : l’offset est contenu dans un registre de
base BX ou BP.
Exemples :
mov al,[bx] : transfère la donnée dont l’offset est
contenu dans le registre de base BX vers le registre AL. Le
segment associé par défaut au registre BX est le segment
de données : on dit que l’adressage est basé sur DS ;
mov al,[bp] : le segment par défaut associé au registre
de base BP est le segment de pile. Dans ce cas,
l’adressage est basé sur SS.
adressage basé
• adressage indexé : semblable à l’adressage
basé, sauf que l’offset est contenu dans
un registre d’index SI ou DI, associés par
défaut au segment de données.
Exemples :
mov al,[si] : charge le registre AL avec le
contenu de la case mémoire dont
l’offset est contenu dans SI ;
• mov [di],bx : charge les cases mémoire d’offset DI et DI
+ 1 avec le contenu du registre BX.
• Remarque : une valeur constante peut éventuellement être
ajoutée aux registres de base ou d’index pour obtenir l’offset.
• Exemple :
mov [si+100H],ax
qui peut aussi s’´ecrire
mov [si][100H],ax
ou encore
mov 100H[si],ax

Vous aimerez peut-être aussi