Décaler les octets d'un registre

Signaler
Messages postés
1
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
22 juin 2004
-
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
-
Bonjour à tous !
Je m'adresse à vous car j'ai un petit souci !
Je vous explique vite fait. Donc j'ai un registre (eax) qui a pour valeur : 0000825C, j'aimerais savoir s'il existe une instruction ou même une API qui permettrait de déclaer les octetc afin qu'eax prenne comme valeur 825C0000
Je vous remercie d'avance pour votre aide !

9 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
shl eax, 4

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
salut,

tu peux faire:
shl eax,16
rol eax,16
ror eax,16

@++
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
re,

j'ai oublié:
imul eax,65536

@++
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
pourquoi ces quatres lignes de code alors que BruNews n'en propose qu'une seule.... (que mes recentes lectures me conseilleraient surement) ??
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
salut,

prends ton debugger et tu constatera que pour ce que tu veux faire chacune de ces lignes de code donne le resultat voulu.

shl eax,16 donne decallage de 16 bits sur la gauche en remplissant par des 0
ex:
shl 1234567,16 donne 45670000

rol eax,16 donne un decallage de 16 bits sur la gauche mais en mettant le bit de poid faible a la valeur du bit de poid fort.
ex:
rol 12345678,16 donne 45671234

ror eax,16 idem rol mais en decalant par la droite

imul eax,65536 multiplie eax par 65536 et crée donc un décalage de 16 bits vers la gauche

de +, ce qu'a marqué BruNews est faux puisqu'il décale seulement de 4 bit sur la gauche, toi, tu veux un decalage de 16 bits.

@++
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
re,

je m'est gourré dans l'exemple rol

rol 12345678,16 donne 56781234 bien sur.

@++
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
pfffffffffffff,

shl eax,16 donne decallage de 16 bits sur la gauche en remplissant par des 0
ex:
shl 12345678,16 donne 56780000

@++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
very exact que j'avais encore tape trop vite.
shl eax,16
devrait par contre suffire, non ?

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
salut,

bien sur que cela suffit mais donner le choix et connaitre d'autres instructions du processeur est tj interessant.

d'autant que l'instruction suffit car le nombre a transformer est 0000XXXX vers XXXX0000 mais ca evitera d'avoir un autre post afin de transformer 12345678 en 56781234.

c tout benef...

@++