Expressões de linguagem assembler
This topic applies to:
Edition |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
Native only |
||||
Pro, Premium e Ultimate |
Native only |
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) |