アセンブリ言語の式

更新 : 2007 年 11 月

このトピックの内容は、次の製品に該当します。

Edition

Visual Basic

C#

C++

Web Developer

Express

トピック該当なし トピック該当なし

ネイティブのみ

トピック該当なし

Standard

トピック該当なし トピック該当なし

ネイティブのみ

トピック該当なし

Pro/Team

トピック該当なし トピック該当なし

ネイティブのみ

トピック該当なし

表の凡例 :

トピック該当

対象

トピック該当なし

該当なし

トピックは該当しますが、コマンドは既定では非表示です

既定で非表示のコマンド

デバッガは、アセンブリ言語の式を正確に評価できます。ただし、いくつかの制限事項があります。一部のアセンブリ言語式で使用される構文は、Microsoft Macro Assembler (MASM) などのアセンブリ言語開発システムで使用される構文とは異なっています。

メモリ演算子

メモリ演算子は、直接的なメモリ操作の結果を返す、単項演算子です。これらの演算子は主にアセンブリ言語コードのデバッグに使用します。

{BY | WO | DW} address

BY 演算子は、アドレスの先頭バイトの値を格納する short 型の整数を返します。この演算子は、BYTE PTR をシミュレートします。

WO 演算子は、アドレスのワード (2 バイト) の値を格納する short 型の整数を返します。この演算子は、Microsoft Macro Assembler の WORD PTR 演算子をシミュレートします。DW 演算子は、アドレスの先頭 4 バイトの値を格納する long 型の整数を返します。この演算子は、DWORD PTR をシミュレートします。

x 書式指定子が次のコード例で使われていますが、これを使うと結果が 16 進数で表示されます。

サンプル

  • 変数 sum のアドレスの先頭バイトを表示するには、次のコードを使用します。

    BY sum

  • 変数 new_set のアドレスの先頭ワードを表示するには、次のコードを使用します。

    WO new_set

  • 変数 sum のアドレスのダブルワードを表示するには、次のコードを使用します。

    DW sum

  • 6 の変位付きの EBP レジスタによって指されるバイトを表示するには、次のコードを使用します。

    BY ebp+6,x

  • スタック ポインタによって指されるワード (スタックにプッシュされた最後のワード) を表示するには、次のコードを使用します。

    WO esp,x

  • ESI レジスタによって指されるダブルワードを表示するには、次のコードを使用します。

    DW esi,x

レジスタ間接アドレッシング

デバッガは、レジスタによって指されるメモリ位置を示す角かっこ ([ ]) を認識しません。角かっこの代わりに、BY、WO、および DW の各演算子を使って、その場所に対応するバイト、ワード、またはダブルワードの値を参照します。

MASM 式

デバッガ式

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

変位付きのレジスタ間接アドレッシング

変位を指定して基本、インデックス付き、または基本インデックス付きの各間接モード演算を実行するには、BY、WO、および DW の各演算子に追加指定します。

MASM 式

デバッガ式

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

変数のアドレス

MASM OFFSET 演算子の代わりに、C のアドレス演算子 (&) を使用します。

MASM 式

デバッガ式

OFFSET Var

&Var

PTR 演算子

アセンブリ言語の PTR 演算子を置き換えるには、型キャストを使用するか、または BY、WO、および DW の各演算子にアドレス演算子 (&) を追加します。

MASM 式

デバッガ式

BYTE PTR Var

BY &Var

*(unsigned char*)

&Var

WORD PTR Var

WO &Var

DWORD PTR Var

DW &Var

*(unsigned long*)

&Var

アセンブリ言語の文字列

変数名の後に文字列書式指定子 ,s を追加します。

MASM 式

デバッガ式

String

String,s

C 文字列は null (ASCII 0) 文字で終わるので、文字列表示を要求されると、デバッガは変数の先頭バイトから、メモリ内の次の null バイトまでの文字すべてを表示します。アセンブリ言語プログラムをデバッグする場合、ウォッチ ウィンドウに文字列を表示するには、文字列変数を null 文字で区切る必要があります。null で終わる文字列または null で終わらない文字列を簡単に表示するには、[メモリ] ウィンドウを使用します。

配列の要素と構造体の要素

配列名の前にアドレス演算子 (&) を付けて、目的のオフセットを追加します。オフセットには、式、数値、レジスタ名、または変数を使用できます。

次の例は、バイト、ワード、およびダブルワードの配列の要素を指定する方法を示しています。

MASM 式

デバッガ式

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)

参照

その他の技術情報

ネイティブ C++ の式