L'unité arithmétique (MDU) est spécifique au microcontrôleur 80C537. Elle permet d'effectuer quatre types d'opération :
Cette unité est indépendante de l'unité centrale, une opération peut donc être effectuée alors que le micro continue à exécuter les instructions du programme.
Voici un résumé des performances de cette MDU :
| Opération | Résulat | Reste | Temps d'execution |
| 32 bits / 16 bits | 32 bits | 16 bits | 6Tcy |
| 16 bits / 16 bits | 16 bits | 16 bits | 4Tcy |
| 16 bits * 16 bits | 32 bits | 4Tcy | |
| Normalisation | 32 bits | 6Tcy | |
| Décalage | 32 bits | 6 décalages par cycle |
Tcy = temps de cycle machine.
Cette MDU est représentée par 7 SFR : MD0 à MD5 et ARCON. C'est l'ordre d'écriture dans ces registres qui détermine l'opération à effectuer :
| Opération | 32bits / 16 bits A / B |
16 bits / 16 bits A / B |
16 bits * 16 bits A * B |
| Première écriture |
MD0 <-- A faible MD1 <--------- A MD2 <----------A MD3 <---- A fort MD4 <-- B faible MD5 <---- B fort |
MD0 <--- A faible MD1 <----- A fort MD4 <--- B faible MD5 <----- B fort |
MD0 <---- A L MD4 <---- B L MD1 <---- A H MD5 <---- B H |
| Première lecture |
MD0 -> Résultat L MD1 ---> Résultat MD2 ---> Résultat MD3 -> Résultat H MD4 ----> Reste L MD5 ---> Reste H |
MD0 -> Résultat L MD1 -> Résultat H MD4 ----> Reste L MD5 ----> Reste H |
MD0 --> Prod L MD3 --> Prod H |
Qu'est-ce que la Normalisation ??
Elle consiste à décaler vers la gauche une valeur binaire
jusqu'à ce que le bit de poids fort soit un 1. Utile pour une
arithmétique utilisant le format virgule flottante :
| MD0 <------ A faible MD1 <------------- A MD2 <--------------A MD3 <-------- A fort ARCON <- xxx00000 |
| MD0 --> Résultat faible MD1 ----------> Résultat MD2 ----------> Résultat MD3 -----> Résultat fort |
L'opération de décalage est la même que la normalisation sauf qu'il faut placer le nombre de décalage voulu dans SC.x et le sens dans SLR (1 pour droite). SC.x et SLR sont des bits du registre ARCON (0EFH). Il contient deux autres bits : MDEF (indicateur d'erreur automatiquement remis à 0 après lecture) et MDOV (indicateur de débordement mis à 1 après division par 0 ou résultat supérieur à 0FFFFH).