Voyons maintenant les limites des nombres .b, .w et .l : il y a déjà deux catégories, c'est à dire les nombres signés et non-signés (signed et unsigned en anglais). Avant de voir plus loin, il vous faut savoir que la position de chaque chiffre 0 ou 1 d'un nombre binaire est numérotée.
Prenons un exemple simple : le chiffre 7 tient sur un octet et s'écrit : %0000 0111
En partant de la gauche :
- 0 est à la position 7,
- 0 est à la position 6,
- 0 est à la position 5,
- 0 est à la position 4,
- 0 est à la position 3,
- 1 est à la position 2,
- 1 est à la position 1,
- 1 est à la position 0.
Le chiffre 7 peut aussi tenir sur un mot : %0000 0000 0000 0111
Dans ce cas, toujours en partant de la gauche :
- 0 est à la position 15,
- 0 est à la position 14,
- 0 est à la position 13,
- 0 est à la position 12,
- 0 est à la position 11,
- 0 est à la position 10,
- 0 est à la position 9,
- 0 est à la position 8,
- 0 est à la position 7,
- 0 est à la position 6,
- 0 est à la position 5,
- 0 est à la position 4,
- 0 est à la position 3,
- 1 est à la position 2,
- 1 est à la position 1,
- 1 est à la position 0.
Le chiffre 7 peut aussi tenir sur un long mot : %0000 0000 0000 0000 0000 0000 0000 0111
Toujours en partant de la gauche :
- 0 est à la position 31,
- 0 est à la position 30,
- 0 est à la position 29,
- 0 est à la position 28,
- 0 est à la position 27,
- 0 est à la position 26,
- 0 est à la position 25,
- 0 est à la position 24,
- 0 est à la position 23,
- 0 est à la position 22,
- 0 est à la position 21,
- 0 est à la position 20,
- 0 est à la position 19,
- 0 est à la position 18,
- 0 est à la position 17,
- 0 est à la position 16,
- 0 est à la position 15,
- 0 est à la position 14,
- 0 est à la position 13,
- 0 est à la position 12,
- 0 est à la position 11,
- 0 est à la position 10,
- 0 est à la position 9,
- 0 est à la position 8,
- 0 est à la position 7,
- 0 est à la position 6,
- 0 est à la position 5,
- 0 est à la position 4,
- 0 est à la position 3,
- 1 est à la position 2,
- 1 est à la position 1,
- 1 est à la position 0.
Revenons à nos moutons maintenant. Les octets, mots et long mots sont divisés en deux catégories :
1) Les signés
Ils contiennent un signe, qui peut donc être soit plus (+) ou soit moins (-). Pour signifier ceci au CPU, un bit spécial lui est consacré.
Pour un octet (byte ou .b) : bit n° 7Pour un mot (word ou .w) : bit n° 15Pour un long mot (long word ou .l) : bit n° 31
Pour avoir des nombres avec signe (-), il faut partir avec tous les bits à 1 et cette fois effectuer les décalages avec un 0 :
En reprenant notre chiffre 7 :
-1 = %1111 1111 = $FF
-2 = %1111 1110 = $FE
-3 = %1111 1101 = $FD
...
En reprenant notre chiffre 7 :
+7 = %0000 0111.b = $07-7 = %1111 1001.b = $F9+7 = %0000 0000 0000 0111.w = $0007-7 = %1111 1111 1111 1001.w = $FFF9+7 = %0000 0000 0000 0000 0000 0000 0000 0111.l = $00000007-7 = %1111 1111 1111 1111 1111 1111 1111 1001.l = $FFFFFFF9
Donc, leurs limites sont :
Pour un .b (+) de :
0 à 127
%0000 0000 à %0111 1111
$00 à $7F
Pour un .w (+) de :
0 à 32 767
%0000 0000 0000 0000 à %0111 1111 1111 1111
$0000 à $7FFF
Pour un .l (+) de :
0 à 2 147 483 647
%0000 0000 0000 0000 0000 0000 0000 0000 à %0111 1111 1111 1111 1111 1111 1111 1111
$00000000 à $7FFFFFFF
Pour un .b (-) de :
-128 à -1
%1000 0000 à %1111 1111
$80 à $FF
Pour un .w (-) de :
-32 768 à -1
%1000 0000 0000 0000 à %1111 1111 1111 1111
$8000 à $FFFF
Pour un .l (-) de :
-2 147 483 648 à -1
%1000 0000 0000 0000 0000 0000 0000 0000 à %1111 1111 1111 1111 1111 1111 1111 1111
$80000000 à $FFFFFFFF
2) Les non-signésEux sont toujours plus (+) et n'ont donc aucun bit de distinction.
Leurs limites sont donc :
Pour un .b (+) de :
0 à 255
%0000 0000 à %1111 1111
$00 à $FF
Pour un .w (+) de :
0 à 65 535
%0000 0000 0000 0000 à %1111 1111 1111 1111
$0000 à $FFFF
Pour un .l (+) de :
0 à 4 294 967 295
%0000 0000 0000 0000 0000 0000 0000 0000 à %1111 1111 1111 1111 1111 1111 1111 1111
$00000000 à $FFFFFFFF
Bref, tout ceci est la base de l'assembleur : à connaitre sur le bout des doigts !
Aucun commentaire:
Enregistrer un commentaire