PB - 1000
 

 

Site Home

PB-1000 Home

Informations

Les codes ASM

La mémoire

Le Désassembleur

Les programmes

Le "Hardware"


Représentation des nombres en mémoire

 

- Cas de "ANS" : (stockage du dernier nombre calculé)

nb = (+/-) m x 10 ^ (exp)

Ce nombre est stocké sur 8 octets à l'adresse ANSAD: &H6D08

Stocké sur 8 octets en BCD (Binaire Code Décimal), dans l'ordre suivant

Mantisse
Exp. code
Value code
octet1
octet2
octet3
octet4
octet5
octet6
octet7
octet8
BDC
BDC
BDC
BDC
BDC
BDC
hexa.
hexa.
==== adresses mémoire croissantes ====>

 

 

 

nb = (+/-) m x 10 ^ (exp)

- 6 octets : 12 chiffres de la mantisse commançant par le chiffre de puissance la plus faible.

- 1 octet : code exposant

exp = Exp. code si b > 0
exp = Exp. code - 100 si b < 0

- 1 octet : code de valeur:

&H01 : si nb positif et nb >= 1
&H00 : si nb positif et 0 =< nb < 1
&H05 : si nb négatif et -1 < nb < 0
&H06 : si nb négatif et nb < -1

nb value
...
-1
...
0
...
1
...
value code
&H06
&H05
&H00
&H01
ex:
-1.2568 -0.9487 0.2985 1.001

- En affichant les octets en sens inverse de leur position en mémoire on obtient:
value code
Exp. code
Mantisse : m
octet 8
octet 7
octet6
octet5
octet4
octet3
octet2
octet1
a
b
           

nb = m x 10 ^ (exp)

- Si le nombre est une puissance négative ( -1 < nb < 1 ) alors:

nb = m x 10 ^ (-exp) avec exp = 100 - b

ATTENTION: L'octet &H59 représentera la chaine "95". Ainsi le nombre "1234567891" aura comme mantisse &H10 &H89 &H67 &H45 &H23 &H01.

Pour le vérifier: taper "1234567891" + "ENTER" dans le PB-1000 puis demandez un affichage du contenu de la mémoire depuis &H6D08 en tapant:

"MON"+"ENTER"
puis
"D6D08"+"ENTER".

Le PB-1000 affiche l'adresse de l'octet demandé et sa valeur puis celle des 7 suivants: "6D08 10 89 67 45 23 01 09 01"

Exemples:

1 ==> 00 00 00 00 00 01 00 01
value code = 01: nb positif >= 1
exp. code = 00
mantisse = 01 00 00 00 00 00
nb = 01,00 00 00 00 00 x 10 ^ (00) = 1 x 10 ^ 1= 1

123 ==> 00 00 00 00 23 01 02 01
value code = 01: nb positif >= 1
exp. code = 02
mantisse = 01 23 00 00 00 00
nb = 01.23 00 00 00 00 x 10 ^ (02) = 1.23x10^2 = 123

123456 ==> 00 00 60 45 23 01 05 01
value code = 01: nb positif >= 1
exp. code = 05
mantisse = 01 23 45 60 00 00
nb = 01.23456 x 10 ^ (05) = 1.23x10^2 = 123456

- 987654 ==> 00 00 40 65 87 09 05 06
value code = 06: nb négatif < -1
exp. code = 05 ==> exp = (
mantisse = 09 87 65 40 00 00
nb = -09.87654 x 10^(05) = -9.87654x10^2 = - 987654

- 0.1234567895 ==> 50 89 67 45 23 01 99 05
value code = 05: nb négatif entre -1 et 0
exp. code = 99 ==> exp = ( 99 - 100 ) = -1
mantisse = 01.234567895
nb = -1.234567895 x 10 ^ (-1) = -1.234567895 x 10^2 = - 0.1234567895

 

Remarque:
- si "value code" = 00 alors nb = m x 10 exp (Exp code) : nombre positif à puissance négative : 0.001...
- si "value code" = 05 alors nb = - m x 10 exp(Exp code -100) :nombre négatif à puissance négative: -0.001...

 

- NOMBRE EN MEMOIRE

- Sur 8 octets comme pour ANS mais:

6 octets + 1 quartet : mantisse
1 octet : exp code
1 quartet : sign code

 

Mantisse
Exp. code
Sign
octet 1
octet 2
octet 3
octet 4
octet 5
octet 6
octet 7
octet 8
MSB
LSB
MSB
LSB
MSB
LSB
MSB
LSB
MSB
LSB
MSB
LSB
MSB
LSB
MSB
LSB

 

 

 

 


Airbug.two 2002