calculs arithmétiques
Les instructions d'opérations logiques

Opérateur arithmétique ADDr

L'opération de calcul ADDr sert à de multiples usages, à la fois, comparaison, addition et soustraction selon le mode. Les calculs sont réalisés entre deux opérandes sources et le résultat est stocké dans la destination selon la position du flag comparaison.
Cette opération utilise plusieurs alias de programmation : SUBr pour les soustractions et CMPr pour les comparaisons.
Utilisation du mode :

Impacte tous les flags : C, C8, C16, S, S8, S16, O, O8, O16, P et Z.

En résumé :

Usage : ADDr Rdd,Rnn,Rmm,[mode]
Exemple : ADDr R31,R30,R29 ou ADD R31,R30,R29,+
Résultat : R31 <= R30 + R29
Exemple : ADDr R31,R30,R29,-
Résultat : R31 <= R30 - R29
Alias : SUBr Rdd,Rnn,Rmm
Exemple : ADDr R02,R30,R29,c
Résultat : chargement des flags selon les résultats de R30-R29
Alias : CMPr Rnn,Rmm

Opérateur arithmétique ADDd

L'opération de calcul ADDd permet l'addition d'un nombre signé de 16 bits avec un registre. Le résultat sera enregistré dans un second registre.

Impacte tous les flags : C, C8, C16, S, S8, S16, O, O8, O16, P et Z.

En résumé :

Usage : ADDd Rdd,Rnn,DIR16
Exemple : ADDd R31,R30,0x1234
Résultat : R31 <= R30 + 0x1234

Exemple : ADDd R31,R30,-2 ou SUBd R31,R30,2
Résultat : R31 <= R30 - 2

Multiplication MUL

L'opération de calcul MUL calcule dans un registre 32 bits de destination le résultat de la multiplication de 2 nombres sur 32 bits. Le mode permet d'indiquer si les nombres sont ou non signés :

Impacte tous les flags : C, C8, C16, S, S8, S16, O, O8, O16, P et Z.

En résumé :

Usage : MUL Rdd,Rnn,Rmm, mode
Exemple : MUL R31,R30,R29,unsigned ou MUL R31,R30,R29
Résultat : R31 <= R30 * R29

Exemple : MUL R31,R30,R29,signed
Résultat : R31 <= R30 * R29

Division DIV

L'opération de calcul DIV calcule dans un registre 32 bits de destination le résultat de la division de 2 nombres sur 32 bits. Le mode permet d'indiquer si les nombres sont ou non signés :

Le type permet de définir le type de la division :

Impacte tous les flags : C, C8, C16, S, S8, S16, O, O8, O16, P et Z.

En résumé :

Usage : DIV Rdd,Rnn,Rmm,mode,type
Exemple : DIV R31,R30,R29,unsigned,normal ou DIV R31,R30,R29
Résultat : R31(bits 31 à 16) <= R30 % R29 et R31(bits 15 à 0) <= R30 / R29.

Exemple : DIV R31,R30,R29,signed,rest
Résultat : R31 <= (signed)(R30 % R29)
Sauts et manipulation de bits
Simple-Cpu The Simple CPU project The Simple CPU project
Un projet de disk91
Small CPU project