Expressions du langage assembleur
Mise à jour : novembre 2007
Cette rubrique s'applique à :
Édition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
Natif uniquement |
|||
Standard |
Natif uniquement |
|||
Pro et Team |
Natif uniquement |
Légende du tableau :
Applicable |
|
Non applicable |
|
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) |