Les opérations arithmétiques .

Addition

Exemple d'additions

L'addition suit les mêmes règles que l'instruction MOV, ainsi l'on ne peut pas par exemple additionner en une seule opération i et j. Il faut dans ce cas passer par l'intermédiaire d'un registre .

Exemple d'addition avec registres.

 

Soustraction.
Le code opération de la soustraction est SUB. Cette instruction suit exactement
les mêmes règles que l'addition.

 Multiplication non signée.
Le code opération de la multiplication non signée esr MUL.

ATTENTION, le format est différent de l'addition et de la soustraction.

Image

L'opérande est soit un identificateur correspondant à une déclaration d'entier soit un registre
SELON LE TYPE DE L'OPERANDE octet OU mot, LA MULTIPLICATION EST EXECUTEE
SUR 8 BITS OU 16 BITS.

Exemple :
l'opérande est un octet :
MUL i.

Données : AL et i
Résultat : AX
Opération éffectuée : AX <- AL * i

MUL AH

Données : AL et AH
Résultat : AX
Opération éffectuée : AX <- AL*AH

L'opérande est un mot :
MUL a

Données : AX et a
Résultat : DX,AX
Opération éffectuée : DX,AX <- AX*a

MUL CX

Données : AX et CX
Résultat : DX,AX
Opération éffectuée : DX,AX <- AX*CX

Multiplication signée .
Dans le cas précedent , remplacer MUL par IMUL.

Division non signée.
Le format de l'instruction non signée est le suivant :
DIV OPERANDE

Comme pour la multiplication, le type de division effectuée dépend du type de l'opérande.
L'opérande peut être un identificateur d'entier ou un registre.

L'opérande est un octet.

DIV i

Données : AX et i.
Résultats : AH le reste de la division.
AL quotient de la division.
Opération éffectuée : AL <- AX / i , AH <- AX mod i.


L'opérande est un mot.

DIV a

Données : (DX,AX) et a.
Résultats : DX le reste de la division.
AX quotient de la division.
Opération éffectuée : AX <- (DX,AX) / a , DX <- (DX,AX) mod a.

Division signée .
Comme la division non signée en utilisant IDIV comme code opération.

Remarques sur les divisions :
Il peut être intéressant de faire précéder une instruction de division par l'une des
instructions suivantes :

CBW Convert Byte to Word

Donnée : AL
Résultat : AX<- extension de Al avec le bit de signe.

CWD Convert Word to Double word.

Donnée : AX
Résultat : DX <- extension de AX avec le bit de signe.

Décrémentation.

DEC AX

AX

AX - 1

DEC i

I

I -1

DEC a

A

A - 1

 

Incrémentation.

INC AX

AX

AX + 1

INC i

I

I + 1

INC a

A

A + 1

 

Stockage des entiers.
Rappelons que le microprocesseur Intel 8086 stocke ( en mémoire centrale ) les entiers
sur 16 bits ( mots ) de la façon suivante :

Par adresse croissante, nous avons l'octet de poids faible suivi de l'octet de poids fort.
Ainsi 3 est représentté en héxadécimal par les valeurs 03 00.