Décaler les octets d'un registre

Kephuro2 Messages postés 1 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 22 juin 2004 - 22 juin 2004 à 19:22
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 - 2 juil. 2004 à 10:47
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

BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
23 juin 2004 à 00:36
shl eax, 4

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

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

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

j'ai oublié:
imul eax,65536

@++
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
1 juil. 2004 à 16:20
pourquoi ces quatres lignes de code alors que BruNews n'en propose qu'une seule.... (que mes recentes lectures me conseilleraient surement) ??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 1
1 juil. 2004 à 17:23
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.

@++
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 1
1 juil. 2004 à 17:25
re,

je m'est gourré dans l'exemple rol

rol 12345678,16 donne 56781234 bien sur.

@++
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 1
1 juil. 2004 à 17:27
pfffffffffffff,

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

@++
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
1 juil. 2004 à 17:33
very exact que j'avais encore tape trop vite.
shl eax,16
devrait par contre suffire, non ?

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 1
2 juil. 2004 à 10:47
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...

@++
0
Rejoignez-nous