Précédent   Forum du club des développeurs et IT Pro > Autres langages > Assembleur
Assembleur Forum d'entraide Assembleur. Avant de poster -> F.A.Q Assembleur Tutoriels Assembleur
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 06/01/2013, 19h22   #1
tchoumo
Futur Membre du Club
 
Inscription : octobre 2012
Messages : 147
Détails du profil
Informations forums :
Inscription : octobre 2012
Messages : 147
Points : 15
Points : 15
Par défaut Nasm : Shl ?

Bonjour

Ces commandes là :

Code :
1
2
3
shl ebx,1
sub eax,48
add ebx,eax
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 ..
tchoumo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2013, 22h11   #2
Obsidian
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 4 639
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Chercheur d'emploi
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2007
Messages : 4 639
Points : 11 096
Points : 11 096
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 :

Code :
1
2
3
4
5
6
       1
      15
     158
    1586
   15860
  158605
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2013, 22h28   #3
tchoumo
Futur Membre du Club
 
Inscription : octobre 2012
Messages : 147
Détails du profil
Informations forums :
Inscription : octobre 2012
Messages : 147
Points : 15
Points : 15
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 ?
tchoumo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2013, 22h42   #4
Obsidian
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 4 639
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Chercheur d'emploi
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2007
Messages : 4 639
Points : 11 096
Points : 11 096
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.
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h52.


 
 
 
 
Partenaires

Hébergement Web