Addition (signés) sur la norme ieee745
Objectif :
L’objectif de ce TP c’est de se familiariser avec la norme IEEE748, et effectuer l’addition sur les nombres (signés) sur un µP 8086.
Traitement :
Nombre dans la mémoire : Selon la norme IEEE, un nombre s’écrit sous la forme : N = (-1)s.1,M.2E Tel que : S : Le signe du nombre sur 1 bit M : La mantisse sur 23 bit E : L’exposant sur 8 bit. Pour effectuer la somme entre deux nombre virgule flottante, on effectue le traitement suivant : 1. Alignement des mantisses (Selon la mantisse la plus grande) 2. Addition des mantisses 3. Calcul du nouvel exposant Pour représenter un nombre dans la mémoire on utilise cette représentation : 8 bits S 8 bits E+127 24 bits 1.M
Donc pour représenter le nombre 6.5 : Norme IEEE : 0 S 1000 0001 E+127 1010 0000 0000 0000 0000 000 M
Dans la mémoire on ajoute 1 pour la mantisse et on complète par 0 à la fin : 0000 0000 S 1000 0001 E+127 1101 0000 0000 0000 0000 0000 1.M
De cette façon on économise les opérations de traitement d’un mot de 16 bits on visant que les bits qu’on désire calculer. Donc (6.5)10 = (40 D0 00 00)16 sur la norme IEEE (6.5)10 = (00 81 F8 00 00)16 sur la norme IEEE dans la mémoire. Programme : On traite ici un exemple sur le déroulement du programme : N1 = 6.5 N2 = 1.25 On utilise donc directement la norme IEEE dans la mémoire pour effectuer le traitement, et ensuite on ramène le nombre trouvé à la norme IEEE conventionnelle : N1 N2 0000 0000 0000 0000 1000 0001 0111 1111 1101 0000 1010 0000 0000 0000 0000 0000 0000 0000 0000 0000
On normalise : N1 N2 N3 0000 0000 0000 0000 0000 0000 1000 0001 1000 0001 1000 0001 1101 0000 0010 1000 1111 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
Donc le nombre trouver est : (00 81 F8 00 00)16, on passe à la norme IEEE conventionnelle on enlevé le 1 de la normalisation, et on considère le LSB du premier octet comme valeur de signe : N3 0000 0000 1000 0001 1111 1000 0000 0000 0000 0000