構文 <タイプ> PTR <アドレス式>
<タイプ>には、タイプを表すキーワードまたは定数を指定します。次に、指定可能なキーワードと定数を示します。同じ行のキーワードと定数は、互いに同じ効果を持ちます。
キーワード | 定数 |
BYTE | 1 |
WORD | 2 |
DWORD | 4 |
FWORD | 6 |
QWORD | 8 |
TBYTE | 10 |
NEAR | 0FFFFh |
FAR | 0FFFEh |
PROC |
このほか、符号付きを示す「SBYTE」「SWORD」「SDWORD」や、TYPEDEF 文で定義されているタイプ名も指定できます。
PTR 演算子は、<アドレス式>のタイプを指定の<タイプ>と見なすように指定します。
<タイプ>に「PROC」を指定すると、タイプはメモリモデルに従って NEAR または FAR になります。メモリモデルについては .MODEL 文の説明を参照してください。
一般に、アドレス式にはタイプという属性があります。アドレス式のデフォルトのタイプは、アドレス式がラベルを含むならばそのラベルのタイプであり、ラベルを含まないならば「未定」になります。しかし、PTR 演算子を使用すれば、アドレス式のタイプを自由に設定することができます。
アドレス式のタイプはときとして重要な意味を持ちます。プロセッサ命令のオペランドでアドレス式を使用したときにタイプが正しくないと、警告が発生したり意図しない命令コードが生成されたりすることがあります。
32 ビットセグメントで、オペランドではなくアドレス参照のビットサイズを指定するには、ADDR16/ADDR32 演算子 を使用します。
適用可能な式
PTR 演算子の左項はタイプを表すキーワードまたは定数でなければなりません。右項はアドレス式でなければなりません。
例 MOV AX, BUF ; BUF が WORD タイプでなければ警告 MOV AX, WORD PTR BUF ; ラベル「BUF」のタイプは何でもよい MOV BYTE PTR [SI], 3 ; 1 バイト値代入のコードになる MOV WORD PTR [SI], 3 ; 2 バイト値代入のコードになる MOV [SI], 3 ; アドレスタイプ未定のため警告