Partilhar via


Expressões de linguagem assembler

This topic applies to:

Edition

Visual Basic

C#

F#

C++

Web Developer

Express

O tópico não é aplicável O tópico não é aplicável O tópico não é aplicável

Native only

O tópico não é aplicável

Pro, Premium e Ultimate

O tópico não é aplicável O tópico não é aplicável O tópico não é aplicável

Native only

O tópico não é aplicável

The debugger can correctly evaluate assembly-language expressions, with some restrictions. The syntax used for some assembly-language expressions differs from the syntax used in assembly-language development systems, such as the Microsoft Macro Assembler (MASM).

Memory Operators

Memory operators are unary operators that return the result of a direct memory operation. These operators are used mainly to debug assembly-language code.

{BY | WO | DW} address

O BY o operador retorna um inteiro curto que contém o primeiro byte no endereço. Este operador simula BYTE PTR.

O WO o operador retorna um inteiro curto que contém o valor da palavra, dois bytes, no endereço. Este operador simula o Microsoft Macro Assembler WORD PTR operação. O DW o operador retorna um inteiro longo que contém o valor dos quatro primeiros bytes no endereço. Este operador simula DWORD PTR.

O x o especificador de formato usado em alguns desses exemplos faz com que o resultado a ser exibido em hexadecimal.

Examples

  • To display the first byte at the address of the variable sum:

    BY sum

  • Para exibir a primeira palavra no endereço da variável new_set:

    WO new_set

  • To display the doubleword at the address of sum:

    DW sum

  • To display the byte pointed to by the EBP register with a displacement of 6:

    BY ebp+6,x

  • To display the word pointed to by the stack pointer, the last word pushed onto the stack:

    WO esp,x

  • To display the doubleword pointed to by the ESI register:

    DW esi,x

Register Indirect

O depurador não reconhece colchetes ([ ]) para indicar um local da memória apontado pelo registro. Em vez disso, use o BY, WO, e DW operadores de referência byte correspondente, palavra ou valores do doubleword.

MASM expression

Debugger expression

C++ expression

BYTE PTR [bx]

BY ebx

*(unsigned char) ebx

WORD PTR [bp]

WO ebp

*(unsigned short *) ebp

DWORD PTR [bp]

DW ebp

*(unsigned long *) ebp

Register Indirect with Displacement

Para realizar operações de modo de indireto com base, indexada ou indexada-baseada com um deslocamento, use o BY, WO, ou DW operadores com o operador de adição.

MASM expression

Debugger expression

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

Address of a Variable

Use o operador c adress-of (&) em vez do operador MASM OFFSET.

MASM expression

Debugger expression

OFFSET Var

&Var

PTR Operator

Usar conversões de tipo ou o BY, WO, e DW operadores com o operador adress-of (&) para substituir a linguagem assembly PTR operador.

MASM expression

Debugger expression

BYTE PTR Var

BY &Var

*(unsigned char*)

&Var

WORD PTR Var

WO &Var

DWORD PTR Var

DW &Var

*(unsigned long*)

&Var

Assembly-Language Strings

Adicione o especificador de formato de seqüência de caracteres ,s após o nome de variável.

MASM expression

Debugger expression

String

String,s

Because C strings end with a null (ASCII 0) character, the debugger displays all characters from the first byte of the variable up to the next null byte in memory when you request a string display. If you intend to debug an assembly-language program, and you want to view strings in the Watch window, you should delimit string variables with a null character. An easy way to view null-terminated or unterminated strings is by using the Memory window.

Array and Structure Elements

Prefixo um nome de matriz com o operador adress-of (&) e adicione o deslocamento desejado. The offset can be an expression, number, register name, or variable.

The following examples show how to do this for byte, word, and doubleword arrays.

MASM expression

Debugger expression

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)

Consulte também

Outros recursos

Expressões em C++ Nativo