Partager via


Expressions du langage assembleur

Mise à jour : novembre 2007

Cette rubrique s'applique à :

Édition

Visual Basic

C#

C++

Web Developer

Express

La rubrique ne s'applique pas La rubrique ne s'applique pas

Natif uniquement

La rubrique ne s'applique pas

Standard

La rubrique ne s'applique pas La rubrique ne s'applique pas

Natif uniquement

La rubrique ne s'applique pas

Pro et Team

La rubrique ne s'applique pas La rubrique ne s'applique pas

Natif uniquement

La rubrique ne s'applique pas

Légende du tableau :

La rubrique s'applique

Applicable

La rubrique ne s'applique pas

Non applicable

La rubrique s'applique mais la commande est masquée par défaut

Commande ou commandes masquées par défaut.

Le débogueur peut évaluer correctement les expressions du langage assembleur, avec certaines restrictions. La syntaxe utilisée pour les expressions du langage assembleur diffère de la syntaxe utilisée dans les systèmes de développement en langage assembleur, tels que Microsoft Macro Assembler (MASM).

Opérateurs de mémoire

Les opérateurs de mémoire sont des opérateurs unaires qui retournent le résultat d'une opération directe sur la mémoire. Ces opérateurs sont utilisés principalement pour déboguer le code du langage assembleur.

{BY | WO | DW} address

L'opérateur BY retourne un entier court qui contient le premier octet de l'adresse. Cet opérateur simule BYTE PTR.

L'opérateur WO retourne un entier court qui contient la valeur du mot (deux octets) de l'adresse. Cet opérateur simule l'opération Microsoft Macro Assembler WORD PTR. L'opérateur DW retourne un entier long qui contient la valeur des quatre premiers octets de l'adresse. Cet opérateur simule DWORD PTR.

Le spécificateur de format x utilisé dans certains de ces exemples provoque l'affichage du résultat au format hexadécimal.

Exemples

  • Pour afficher le premier octet à l'adresse de la variable sum :

    BY sum

  • Pour afficher le premier mot à l'adresse de la variable new_set:

    WO new_set

  • Pour afficher le mot double à l'adresse de la variable sum :

    DW sum

  • Pour afficher l'octet vers lequel pointe le registre EBP avec un déplacement de 6 :

    BY ebp+6,x

  • Pour afficher le mot vers lequel est dirigé le pointeur de la pile (dernier mot faisant l'objet d'un push vers la pile) :

    WO esp,x

  • Pour afficher le mot double vers lequel pointe le registre ESI :

    DW esi,x

Adressage indirect du registre

Le débogueur ne reconnaît pas les crochets ([ ]) pour indiquer un emplacement mémoire vers lequel pointe un registre. Utilisez à la place les opérateurs BY, WO et DW pour faire référence à l'octet, au mot ou au mot double correspondant.

Expression MASM

Expression du débogueur

Expression C++

BYTE PTR [bx]

BY ebx

*(unsigned char) ebx

WORD PTR [bp]

WO ebp

*(unsigned short *) ebp

DWORD PTR [bp]

DW ebp

*(unsigned long *) ebp

Adressage indirect du registre avec déplacement

Pour effectuer des opérations en mode indirect de base, indexé ou mixte avec un déplacement, utilisez les opérateurs BY, WO ou DW avec l'opérateur d'addition.

Expression MASM

Expression du débogueur

BYTE PTR [edi+6]

BY edi+6

BYTE PTR Test[ebx]

BY &Test+ebx

WORD PTR [esi][ebp+6]

WO esi+ebp+6

DWORD PTR [ebx][esi]

DW ebx+esi

Adresse d'une variable

Utilisez l'opérateur d'adresse C (&) au lieu de l'opérateur OFFSET MASM.

Expression MASM

Expression du débogueur

OFFSET Var

&Var

Opérateur PTR

Utilisez des casts de type ou les opérateurs BY, WO et DW avec l'opérateur d'adresse (&) pour remplacer l'opérateur PTR du langage assembleur.

Expression MASM

Expression du débogueur

BYTE PTR Var

BY &Var

*(unsigned char*)

&Var

WORD PTR Var

WO &Var

DWORD PTR Var

DW &Var

*(unsigned long*)

&Var

Chaînes en langage assembleur

Ajoutez le spécificateur de format de chaîne ,s après le nom de la variable.

Expression MASM

Expression du débogueur

String

String,s

Dans la mesure où les chaînes C se terminent par un caractère Null (ASCII 0), le débogueur affiche tous les caractères du premier octet de la variable jusqu'à l'octet Null suivant de la mémoire lorsque vous demandez l'affichage d'une chaîne. Si vous souhaitez déboguer un programme en langage assembleur et visualiser les chaînes dans la fenêtre Espion, vous devez délimiter les variables chaîne à l'aide d'un caractère Null. La fenêtre Mémoire facilite l'affichage de chaînes non terminées ou qui se terminent par un caractère Null.

Éléments de tableau et de structure

Attribuez un préfixe au nom du tableau en utilisant l'opérateur d'adresse & et ajoutez l'offset souhaité. L'offset peut être une expression, un nombre, un nom de registre ou une variable.

Les exemples suivants montrent comment faire pour effectuer cette opération dans le cas de tableaux d'octets, de mots et de mots doubles.

Expression MASM

Expression du débogueur

String[12]

BY &String+12*(&String+12)

aWords[bx+di]

WO &aWords+bx+di*(unsigned*)(&aWords+bx+di)

aDWords[bx+4]

DW &aDWords+bx+4*(unsigned long*)(&aDWords+bx+4)

Voir aussi

Autres ressources

Expressions en C++ natif