2017-03-04 1 views
0

Comment faire un décalage à gauche ou à droite pour déplacer une séquence d'octets d'un nombre de bits spécifié? Suggestions ?Décale une séquence d'octets de N bits. Langue d'assemblage

+1

Qu'est-ce que vous avez fait jusqu'à présent? –

+0

Pour mon cas particulier, j'ai découvert une manière différente d'atteindre mon objectif. Je dois x ou deux chaînes avec décalage relatif et j'utilise le décalage d'adresse. Mais ma solution à mon problème n'est pas la réponse. – Rubyko

Répondre

1

https://board.flatassembler.net/topic.php?t=19767

Jetez un oeil à shld et shrd. Vous pouvez les enchaîner pour faire plusieurs changements de mots {q | d}. Si la valeur du décalage est supérieure à 32 bits (ou 64 bits pour le code 64 bits), déplacez ensuite les unités entières et ajoutez les sh{l|r}d aux derniers bits.

0

Il y a des instructions comme SHL (décalage vers la gauche) et SHR (décalage à droite) que vous pouvez utiliser.

Par exemple:

SHL 2 $, r0 qui signifie décaler tous les bits de la valeur stockée dans le registre à zéro par deux dans la direction gauche.

+0

Ces instructions décalent une séquence de _bits_, pas une séquence de _bytes_. Par exemple: que diriez-vous d'une séquence de 20 octets? – zx485

+0

Registre est une séquence limitée d'octets ... Je veux plus =) – Rubyko