16 ビットプロセッサであった 80286 までと比べて、32 ビットプロセッサである 80386 以上では、いくつかの拡張部分があります。この節では、この拡張部分について説明します。
32 ビットプロセッサの追加レジスタ
80386 以上のプロセッサでは、新たに次のレジスタが使用できるようになりました。
汎用レジスタ
セグメントレジスタ
なお、このほかにも特殊な制御レジスタなどがありますが、ここでは取り上げません。
上記で、32 ビットの各汎用レジスタは、16 ビットレジスタが使用できる命令において、同じように使用することができます(MOV、ADD など)。FS と GS の2つのセグメントレジスタは、ES などと同じように使用します。
32 ビットプロセッサの追加メモリオペランド
メモリオペランドでは、インデクス/ベースレジスタが拡張され、すべての汎用レジスタが使用できるようになったほか、「スケール」機能が追加されました。
メモリオペランドのインデクス/ベースレジスタ部分は、次の構文になります。
<ベースレジスタ>+<インデクスレジスタ>*<スケール>
<ベースレジスタ>は、8つの 32 ビット汎用レジスタのうちのいずれかです。
<インデクスレジスタ>は8つの 32 ビット汎用レジスタのうち ESP 以外です。
<スケール>は1、2、4、8のうちいずれかです。デフォルトは1です。この項目を指定すると、インデクスレジスタの値はスケールの値に掛け合わせたてから使用されます。
例を示します。
MOV AX, [SI] MOV EAX, [SI] MOV AX, [ESI] MOV EAX, [ESI] MOV EAX, [ECX+EDX] MOV EAX, [ECX+EDX*2]