構文 .USE16 .USE32
セグメントの途中に .USE16 または .USE32 を記述して、生成されるコードのデフォルトのビットサイズを指定することができます。これらの文は、CPU のモードを実行時に切り替える場合に役立ちます。
.USE16 を指定すると、それ以降は 16 ビットモードのコードが生成されます。.USE32 を指定すると、それ以降は 32 ビットモードのコードが生成されます。.USE16 文と .USE32 文は、それぞれ SEGMENT 文の USE16 属性および USE32 属性に対応しています。
80286 以下の CPU は 32 ビットモード用のコードを実行できないため、.386 以上を指定せずに .USE32 を使用すると、警告が発生します。
USE16 属性のセグメントでは、CPU が 16 ビットモードで動作している場合に正しく実行されるコードが生成されます。USE32 属性のセグメントでは、CPU が 32 ビットモードで動作している場合に正しく実行されるコードが生成されます。.USE16 文または .USE32 文を指定すると、このセグメントの USE 属性を途中で切り替えることができます。
USE 属性を切り替えるとアセンブラが生成するコードが変わりますが、実際に CPU の実行モードが変化するわけではありません。CPU の実行モードを切り替えるには、そのためのコードを独自に記述する必要があります。
@UseSize を使用すると、現在のセグメントのビット モードを判定できます。
例 .use16 mov ax, [si] ; 8B 04 mov eax, [esi] ; 67|66|8B 06 .use32 mov ax, [si] ; 67|66|8B 04 mov eax, [esi] ; 8B 06