Vous êtes sur la page 1sur 15

Les Instructions Arithmétiques

❖ L'architecture 8086 propose un ensemble d'instructions pour effectuer des opérations

mathématiques. Ces instructions comprennent :

▪ L'addition (ADD et ADC)

▪ La soustraction (SUB et SBB)

▪ La multiplication (MUL)

▪ La division (DIV)

▪ L'incrémentation (INC)

▪ La décrémentation (DEC)

❖ Ces instructions sont utilisées pour manipuler les données numériques dans les

programmes 8086.
Les Instructions Arithmétiques

❖ L'instruction ADD sur l'architecture 8086 est utilisée pour effectuer des additions arithmétiques.

Elle peut ajouter un octet à un octet (8 bits à 8 bits) ou un mot à un mot (16 bits à 16 bits).

❖ Syntaxe :

ADD destination, source

L’opération effectuée est : destination ← destination + source.

Destination : C'est l'opérande où le résultat de l'addition sera stocké. Il peut s'agir d'un registre (par

exemple AX, BX, CX, DX) ou d'une adresse mémoire.

Source : C'est l'opérande à ajouter à la destination. Il peut être un registre, une adresse mémoire ou

une valeur immédiate.


Les Instructions Arithmétiques

❖ L'instruction ADD peut être utilisée sous différentes formes pour manipuler efficacement

les données dans les programmes écrits pour cette architecture.

❑ ADD reg., mem.


▪ Cette forme permet d'ajouter le contenu d'une adresse mémoire à un registre.
❑ ADD mem., reg.
▪ Cette forme permet d'ajouter le contenu d'un registre à une adresse mémoire.
❑ ADD reg., reg.
▪ Cette forme permet d'ajouter le contenu d'un registre à un autre registre.
❑ ADD mem., immédiat.
▪ Cette forme permet d'ajouter une valeur immédiate à une adresse mémoire.
❑ ADD reg., immédiat.
▪ Cette forme permet d'ajouter une valeur immédiate à un registre.
Les Instructions Arithmétiques

❖ Exemple : Écrivez un code assembleur pour illustrer chaque cas d'utilisation de

l'instruction ADD.

base

offset
Les Instructions Arithmétiques

❖ L'instruction SUB sur l'architecture 8086 est utilisée pour effectuer des opérations de soustraction

arithmétique.

❖ Syntaxe :

SUB destination, source

L’opération effectuée est : destination ← destination - source.

▪ Destination : Il s'agit de l'opérande où le résultat de la soustraction sera stocké. Il peut être un

registre (par exemple AX, BX, CX, DX) ou une adresse mémoire.

▪ Source : Il s'agit de l'opérande qui sera soustrait à la destination. Il peut être un registre, une

adresse mémoire ou une valeur immédiate.

❖ L'instruction SUB permet de soustraire des valeurs entre les registres, la mémoire et les constantes

immédiates.
Les Instructions Arithmétiques

❖ L'instruction SUB peut être utilisée sous différentes formes pour manipuler efficacement

les données dans les programmes écrits pour cette architecture.

❑ SUB reg., mem. :


▪ Cette forme permet de soustraire le contenu d'une adresse mémoire à un registre.
❑ SUB mem., reg. :
▪ Cette forme permet de soustraire le contenu d'un registre à une adresse mémoire.
❑ SUB reg., reg. :
▪ Cette forme permet de soustraire le contenu d'un registre à un autre registre.
❑ SUB mem., immédiat. :
▪ Cette forme permet de soustraire une valeur immédiate à une adresse mémoire.
❑ SUB reg., immédiat. :
▪ Cette forme permet de soustraire une valeur immédiate à un registre.
Les Instructions Arithmétiques

❖ Exemple : Écrivez un code assembleur pour illustrer chaque cas d'utilisation de

l'instruction SUB.
-4 = conversion + cp a 2 + conversion hexa
Les Instructions Arithmétiques

❖ L'instruction INC (Increment) augmente la valeur d'un registre ou d'une adresse mémoire de 1.

❖ Lorsqu'elle est utilisée sur un registre, elle ajoute 1 à sa valeur actuelle.

▪ Par exemple: INC AX ; augmente la valeur de AX de 1.

❖ Lorsqu'elle est utilisée sur une adresse mémoire, elle augmente la valeur stockée à cette adresse de 1.

▪ Par exemple, INC [BX]; augmente la valeur stockée à l'adresse contenue dans BX de 1.

▪ Pour incrémenter un registre :

INC reg

▪ Pour incrémenter une valeur en mémoire :

INC [mem]

▪ reg est le registre à incrémenter.

▪ [mem] est l'adresse mémoire dont la valeur doit être incrémentée.


Les Instructions Arithmétiques
❖ Écrivez un code assembleur pour mettre les registres BL et DX à 28H et 2012H respectivement.
Ensuite, initialisez l'emplacement mémoire commençant par 0600:0100 avec les valeurs 54H et 10H.
Enfin, incrémentez les premier, deuxième et quatrième opérande.

adresse et non contenu

L'instruction LDS charge une valeur de 32 bits (16 bits d'offset et 16 bits de segment) dans les registres SI (pour
l'offset) et DS (pour le segment).
LDS SI, mem
SI est le registre d'offset.
mem est l'adresse mémoire qui contient les 32 bits (16 bits d'offset et 16 bits de segment) à charger.
Les Instructions Arithmétiques

❖ L'instruction DEC (Decrement) diminue la valeur d'un registre ou d'une adresse mémoire de 1.

❖ Lorsqu'elle est utilisée sur un registre, elle soustrait 1 à sa valeur actuelle.

Par exemple: DEC AX; diminue la valeur de AX de 1.

❖ Lorsqu'elle est utilisée sur une adresse mémoire, elle diminue la valeur stockée à cette adresse de 1.

Par exemple: DEC [BX]; diminue la valeur stockée à l'adresse contenue dans BX de 1.

▪ Pour diminuer la valeur d'un registre :

DEC reg

▪ Pour diminuer une valeur en mémoire :

DEC [mem]

▪ reg est le registre à deminuer.

▪ [mem] est l'adresse mémoire dont la valeur doit être diminuée.


Les Instructions Arithmétiques

❖ Exemple : Écrivez un code assembleur pour mettre le registre AX à FFFFH. Ensuite, configurez

l'emplacement mémoire à partir de 0600:0100 avec les valeurs 01H. Enfin, décrémentez les

opérandes.
Les Instructions Arithmétiques

❖ L'instruction MUL est utilisée pour effectuer une multiplication pour deux octets ou mots :

Multiplication : MUL opérande,

▪ Pour les octets : l'instruction MUL multiplie le contenu du registre AL par l'opérande.

▪ Pour les mots : l'instruction MUL multiplie le contenu des registres AX par l'opérande,

et stocke le résultat dans les registres DX et AX.

Exemples :

➢ mov al,51
mov bl,32 AX = 51* 32
mul bl

➢ mov ax,4253
mov bx,1689 (DX,AX)=4253*1689
mul bx
Les Instructions Arithmétiques

❖ Exemple : Écrivez un code assembleur pour multiplier 04H par 02H à l'aide de registres. Ensuite,

multipliez 1212H par 1313H. De plus, multipliez 1AH via la mémoire par le contenu actuel de AL.
Les Instructions Arithmétiques

❖ L'instruction DIV (Division) est utilisée pour effectuer une division sur deux octets ou mots. Cette

instruction divise un opérande par AL ou (DX AX).

▪ Pour les opérations sur un octet (byte) : DIV divise la valeur contenue dans AL par

l'opérande. Le quotient de la division est stocké dans AL, et le reste dans AH.

▪ Pour les opérations sur un mot (word) : DIV divise la valeur contenue dans DX:AX par

l'opérande. Le quotient de la division est stocké dans AX, et le reste dans DX.
Exemples :
➢ mov ax,35
mov bl,10 AL=3 (quotient) et AH=5 (reste)
div bl

➢ mov dx,0
mov ax,1234 AX=123 (quotient) et DX=4 (reste)
mov bx,10
div bx
Les Instructions Arithmétiques
❖ Exemple : Écrivez un code assembleur pour diviser 08H par 02H à travers le registre BL. Ensuite,

divisez 0202H et 0303H par 0606H à travers le registre CX. Ensuite, stockez les résultats (quotient et

reste) dans l'emplacement mémoire commençant à l'adresse 0600:0100 du segment de données.

Vous aimerez peut-être aussi