80386 以上での拡張部分

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]

[目次]