Section courante

A propos

Section administrative du site

Assembleur 80x86

BSWAP

INTEL 80486+, x86-64 Byte Swap

Syntaxe

BSWAP Opérande

Paramètres

Nom Description
Opérande Ce paramètre permet d'indiquer l'opérande utiliser pour faire le traitement et c'est également l'opérande allant recevoir le résultat.

Description

L'instruction tardive BSWAP inverse l'ordre des 4 octets d'un registre de taille de 32 bits. L'octet de poids le plus fort devient celui de poids le plus faible et on affecte les 2 autres octets de la même manière en les inversant eux aussi.

Remarque

Algorithme

MODULE BSWAP(Opérande)
   TemporaireOpérande
   Opérande ( 0 à 7 ) ← Temporaire ( 24 à 31 )
   Opérande ( 8 à 15 ) ← Temporaire ( 16 à 23 )
   Opérande ( 16 à 23 ) ← Temporaire ( 8 à 15 )
   Opérande ( 24 à 31 ) ← Temporaire ( 0 à 7 )

Mnémonique

Instruction Opcode Description
BSWAP reg32 0Fh C8h +rd Inverse l'ordre des octets du registre 32 bits
BSWAP reg64 0Fh C8h +rq Inverse l'ordre des octets du registre 64 bits

Cycles d'horloge

Instruction Opcode 8086 8088 80186 80286 80386 i486 Pentium Cx486SLC Cx486DX IBM 486BL3X UMC U5S
BSWAP reg32 0Fh C8h +rd           1 1 4 4 9 2

Exceptions

 Aucune

Exemples

L'exemple suivant permet d'effectuer un échange sur le registre EAX :

  1. BSWAP EAX

L'exemple suivant permet d'effectuer un échange sur le registre EDX :

  1. BSWAP EDX

L'exemple suivant permet d'effectuer un échange sur le registre RAX :

  1. BSWAP RAX

L'exemple suivant permet d'effectuer un échange sur le registre RDX :

  1. BSWAP RDX

Voici un exemple en Delphi montrant une utilisation de cette instruction :

  1. Program BSwapSamples;
  2.  
  3. {$APPTYPE Console}
  4. Uses SysUtils;
  5.  
  6. Function _BSWAP(X:LongInt):LongInt;Assembler;ASM
  7.  MOV EAX,X
  8.  BSWAP EAX
  9. END;
  10.  
  11. BEGIN
  12.  WriteLn('0 = ',_BSWAP(0));
  13.  WriteLn('-1 = ',_BSWAP(-1));
  14.  WriteLn('$12345678 = $',IntToHex(_BSWAP($12345678),8));
  15.  WriteLn('$87654321 = $',IntToHex(_BSWAP($87654321),8));
  16. END.

on obtiendra le résultat suivant :

0 = 0
-1 = -1
$12345678 = $78563412
$87654321 = $21436587

Voir également

Instruction assembleur 80x86 - Instruction XCHG

Références

Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 153 à 155.

Dernière mise à jour : Lundi, le 8 septembre 2014