|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : octobre 2012 Messages : 147 ![]() |
Bonjour
Ces commandes là : Dans le programme en entier , j'écris une suite de chiffre en binaire et ça le transforme en décimal . Avec les commandes ci-dessus , on peu transformer 100 en 4 a la fin du programme . Cependant , je comprends le -48 , mais je ne vois pas , ou du moins je n'arrive pas à visualiser ce que fais shl . Je sais qu'il décale vers la gauche , mais comment passer de 100 à 4 .. |
|
|
00
|
|
|
#2 |
![]() ![]() Chercheur d'emploi Inscription : septembre 2007 Messages : 4 639 ![]() |
Bonjour,
Tu passes de 100 à 4 parce que « 4 » s'écrit « 100 » en binaire, tout simplement. On effectue « -48 » parce que « 48 » est le code ASCII du caractère « 0 » (zéro) et 49 celui du « 1 ». En effectuant la soustraction, on passe de 48 ou 49 à 0 ou 1, donc on récupère la valeur exacte du bit noté dans ta chaîne. Ensuite, on va les insérer un par un dans ton registre par la droite. « SHL » signifie « Logical SHift to the Left », donc effectivement, cela sert à décaler la valeur en cours d'une position vers la gauche pour ajouter, dans le bit de poids faible, la valeur du bit qu'on vient de lire. C'est un peu lorsque tu saisis un nombre sur une calculatrice. Quand tu le composes, chaque chiffre saisi « pousse » les autres vers la gauche. Par exemple, si je saisis le nombre 158605, je verrai successivement sur mon écran : |
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : octobre 2012 Messages : 147 ![]() |
Bonsoir
J'ai bien saisis cela , et que 4 s'écrit 100 en binaires , mais j'aimerais comprendre ce qui fait que 1 , puis 0 puis le dernier 0 font 4 au final ? |
|
|
00
|
|
|
#4 |
![]() ![]() Chercheur d'emploi Inscription : septembre 2007 Messages : 4 639 ![]() |
Si d'une part tu sais que 4 s'écrit 100 en binaire, et que d'autre part tu insères explicitement « 1 0 0 » dans ton registre, pourquoi t'étonnes-tu de retrouver « 4 » en sortie ?
Dans un ordinateur, au niveau électronique, TOUT est enregistré en binaire. Quand tu écris « MOV EAX,48 », c'est bien la combinaison binaire « 110000 » qui va être chargée dans EAX. Le fait de l'écrire en décimal ou en hexadécimal dans ton programme n'est qu'une facilité offerte au programmeur pour des raisons de confort. Au moment de sa lecture et de son assemblage, ton programme source sera de toutes façon converti en binaire. Donc, quand tu demandes ensuite d'afficher le contenu d'un registre à l'écran, sa valeur binaire sera convertie en décimal. À ce stade, le convertisseur ne peut absolument plus savoir si la valeur convertie provient initialement d'un code source ou si tu l'as composée en insérant un à un les bits à la main. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com