Compartilhar via


Expressões de linguagem assembler

Este tópico se aplica a:

Edição

Visual Basic

C#

C++

Desenvolvedores Web

Express

Somente nativo

Padrão

Somente nativo

PRO e equipe

Somente nativo

Legenda de tabela:

Aplica-se

Não é aplicada

Comando ou comandos oculta por padrão.

O depurador corretamente pode avaliar expressões de linguagem assembler, com algumas restrições.A sintaxe usada para algumas expressões de linguagem assembler difere da sintaxe usada em sistemas de desenvolvimento de linguagem assembler, como o Microsoft Macro Assembler (MASM).

Operadores de memória

Operadores de memória são operadores unários que retornam o resultado de uma operação direta de memória.Esses operadores são usados principalmente para depurar o código da linguagem assembler.

{BY | WO | DW} address

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

The WO 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. The DW operador retorna um inteiro longo que contém o valor dos quatro primeiros bytes no endereço. Este operador simula DWORD PTR.

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

Exemplos

  • Para exibir o primeiro byte no endereço da soma variável:

    BY sum

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

    WO new_set

  • Para exibir o doubleword no endereço da soma:

    DW sum

  • Para exibir o byte apontado pelo Registro EBP com um deslocamento de 6:

    BY ebp+6,x

  • Para exibir a palavra apontada pelo ponteiro da pilha, a última palavra colocada na pilha:

    WO esp,x

  • Para exibir o doubleword apontado pelo registro ESI:

    DW esi,x

Registro indireto

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

Expressão MASM

Expressão do depurador

Expressão 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

Registro indireto com deslocamento

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

Expressão MASM

Expressão do depurador

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

Endereço de uma variável

Usar o C endereço - do operador (&) em vez do operador MASM OFFSET.

Expressão MASM

Expressão do depurador

OFFSET Var

&Var

Operador PTR

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

Expressão MASM

Expressão do depurador

BYTE PTR Var

BY &Var

*(unsigned char*)

&Var

WORD PTR Var

WO &Var

DWORD PTR Var

DW &Var

*(unsigned long*)

&Var

Sequências da linguagem assembly

Adicionar a seqüência de caracteres de formato especificador ,s Após o nome da variável.

Expressão MASM

Expressão do depurador

String

String,s

Como sequências C terminam com um caractere nulo (ASCII 0), o depurador exibe todos os caracteres do primeiro byte da variável até o próximo byte nulo na memória quando você solicita uma exibição da sequência.Se você pretende depurar um programa linguagem assembler, e você desejar exibir sequências na janela Watch, você deve delimitar variáveis de sequência de caracteres com um caractere nulo.Uma maneira fácil de exibir sequências terminadas por caractere nulo ou não finalizadas é utilizando a janela Memory.

Matriz e elementos de estrutura

Prefixo um nome de matriz com o operador adress-of (&) e adicione o deslocamento desejado. O deslocamento pode ser uma expressão, número, nome de registrador, ou variável.

Os exemplos a seguir mostram como fazer isso para byte, palavra, e matrizes doubleword.

Expressão MASM

Expressão do depurador

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