24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

IDIV—Signed Divide ( 続き ) 実アドレス・モード例外 #DE ソース・オペランド ( 除数 ) が 0 である場合。 デス テ ィ ネ ー シ ョ ン に対して符号付き の結果 ( 商 ) が大き すぎる場合。 #GP メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 #SS メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 仮想 8086 モード例外 #DE ソース・オペランド ( 除数 ) が 0 である場合。 デス テ ィ ネ ー シ ョ ン に対して符号付き の結果 ( 商 ) が大き すぎる場合。 #GP(0) メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 #SS(0) メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 #PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。 #AC(0) アライメン ト ・ チェ ッ クがイネーブルにされていて、 アラ イ メン ト が合わないメモ リ 参照が行われた場合。 3:572 第 3 巻 : IA-32 基本命令リファレンス

IMUL—Signed Multiply オペコード 命令 説明 F6 /5 IMUL r/m8 AX← AL∗ r/m バイト F7 /5 IMUL r/m16 DX:AX ← AX ∗ r/m ワード F7 /5 IMUL r/m32 EDX:EAX ← EAX ∗ r/m ダブルワード 0F AF /r IMUL r16,r/m16 ワード・レジスタ ← ワード・レジスタ ∗r/m ワード 0F AF /r IMUL r32,r/m32 ダブルワード・レジスタ ← ダブルワード・レジスタ ∗ r/m ダブル ワード 6B /r ib IMUL r16,r/m16,imm8 ワード・レジスタ ← r/m16 ∗ 符号拡張即値バイト 6B /r ib IMUL r32,r/m32,imm8 ダブルワード・レジスタ ← r/m32 ∗ 符号拡張即値バイト 6B /r ib IMUL r16,imm8 ワード・レジスタ ← ワード・レジスタ ∗ 符号拡張即値バイト 6B /r ib IMUL r32,imm8 ダブルワード・レジスタ ← ダブルワード・レジスタ ∗ 符号拡張即 値バイト 69 /r iw IMUL r16,r/m16,imm16 ワード・レジスタ ← r/m16 ∗ 即値ワード 69 /r id IMUL r32,r/m32,imm32 ダブルワード・レジスタ ← r/m32 ∗ 即値ダブルワード 69 /r iw IMUL r16,imm16 ワード・レジスタ ← r/m16 ∗ 即値ワード 69 /r id IMUL r32,imm32 ダブルワード・レジスタ ← r/m32 ∗ 即値ダブルワード 説明 2 つのオペラ ン ド の符号付き乗算を行 う 。 こ の命令には、 オペラ ン ド の数に応じ て下記 の 3 つの形式がある。 • 1 オペランド形式 : この形式は、 MUL 命令に使用されている形式 と 同じ である。 こ の形式では、 ( 汎用レ ジ ス タ ま たは メモ リ ・ ロ ケ ー シ ョ ン内の ) ソース ・オペランド に ( オペラン ド ・ サイズに応じて ) AL、 AX、 または EAX レジスタの値が掛けられ、 結果がそれぞれ AX、 DX:AX、 または EDX:EAX レジスタにストアされる。 • 2 オペランド形式 : この形式では、 デスティネーション・オペランド ( 第 1 オペラン ド ) にソース ・ オペランド ( 第 2 オペラン ド ) が掛けられる。 デスティネーション・ オペラ ン ド は汎用レ ジ ス タ であ り 、 ソ ー ス ・ オペラ ン ド は即値、 汎用レ ジ ス タ、 ま たは メ モ リ ・ ロ ケ ー シ ョ ンである。 乗算後、 結果はデス テ ィ ネ ー シ ョ ン ・ オペラ ン ド・ロケーションにストアされる。 • 3 オペランド形式 : この形式には、 デスティネーション・オペランド ( 第 1 オペラン ド ) と 2 つのソース ・ オペラン ド ( 第 2 および第3 オペラン ド ) が必要である。 こ の 形式では、 第 1 のソース ・ オペラン ド ( 汎用レ ジ ス タ ま たは メ モ リ ・ ロ ケ ー シ ョ ン ) に第 2 のソース ・ オペラン ド ( 即値 ) が掛け られる。 結果はデステ ィ ネ ーシ ョ ン ・ オ ペラン ド ( 汎用レ ジ ス タ ) にス トアされる。 即値は、 オペラ ン ド と して使用 さ れる と 、 デス テ ィ ネ ー シ ョ ン ・ オペラ ン ド の フ ォ ー マッ ト の長さに符号拡張される。 結果の上位半分への有効ビ ッ ト のキ ャ リ ー があ っ た と き は、 CF および OF フラグがセッ ト される。 結果が結果の下位半分に収 ま っ た と き は、 CF および OF フラグがクリアされ る。 IMUL 命令の 3 つの形式は、 積の長さが両オペランドの長さの 2 倍に計算される点では みな同じである。 1 オペランド形式では、 結果はデスティネーションの長さでストアさ れる。 しかし、 2 および 3 オペランド形式では、 結果はデスティネーションの長さに切 り捨てられてからデスティネーション ・ レジスタにストアされる。 この切り捨てがある ので、 CF または OF フ ラ グをテス ト して、 有効ビ ッ ト の脱落がない よ う 保証する必要が ある。 第 3 巻 : IA-32 基本命令リファレンス 3:573

IMUL—Signed Multiply<br />

オペコード 命令 説明<br />

F6 /5 IMUL r/m8 AX← AL∗ r/m バイト<br />

F7 /5 IMUL r/m16 DX:AX ← AX ∗ r/m ワード<br />

F7 /5 IMUL r/m32 EDX:EAX ← EAX ∗ r/m ダブルワード<br />

0F AF /r IMUL r16,r/m16 ワード・レジスタ ← ワード・レジスタ ∗r/m ワード<br />

0F AF /r IMUL r32,r/m32 ダブルワード・レジスタ ← ダブルワード・レジスタ ∗ r/m ダブル<br />

ワード<br />

6B /r ib IMUL r16,r/m16,imm8 ワード・レジスタ ← r/m16 ∗ 符号拡張即値バイト<br />

6B /r ib IMUL r32,r/m32,imm8 ダブルワード・レジスタ ← r/m32 ∗ 符号拡張即値バイト<br />

6B /r ib IMUL r16,imm8 ワード・レジスタ ← ワード・レジスタ ∗ 符号拡張即値バイト<br />

6B /r ib IMUL r32,imm8 ダブルワード・レジスタ ← ダブルワード・レジスタ ∗ 符号拡張即<br />

値バイト<br />

69 /r iw IMUL r16,r/m16,imm16 ワード・レジスタ ← r/m16 ∗ 即値ワード<br />

69 /r id IMUL r32,r/m32,imm32 ダブルワード・レジスタ ← r/m32 ∗ 即値ダブルワード<br />

69 /r iw IMUL r16,imm16 ワード・レジスタ ← r/m16 ∗ 即値ワード<br />

69 /r id IMUL r32,imm32 ダブルワード・レジスタ ← r/m32 ∗ 即値ダブルワード<br />

説明<br />

2 つのオペラ ン ド の符号付き乗算を行 う 。 こ の命令には、 オペラ ン ド の数に応じ て下記<br />

の 3 つの形式がある。<br />

• 1 オペランド形式 : この形式は、 MUL 命令に使用されている形式 と 同じ である。 こ<br />

の形式では、 ( 汎用レ ジ ス タ ま たは メモ リ ・ ロ ケ ー シ ョ ン内の ) ソース ・オペランド<br />

に ( オペラン ド ・ サイズに応じて ) AL、 AX、 または EAX レジスタの値が掛けられ、<br />

結果がそれぞれ AX、 DX:AX、 または EDX:EAX レジスタにストアされる。<br />

• 2 オペランド形式 : この形式では、 デスティネーション・オペランド ( 第 1 オペラン<br />

ド ) にソース ・ オペランド ( 第 2 オペラン ド ) が掛けられる。 デスティネーション・<br />

オペラ ン ド は汎用レ ジ ス タ であ り 、 ソ ー ス ・ オペラ ン ド は即値、 汎用レ ジ ス タ、 ま<br />

たは メ モ リ ・ ロ ケ ー シ ョ ンである。 乗算後、 結果はデス テ ィ ネ ー シ ョ ン ・ オペラ ン<br />

ド・ロケーションにストアされる。<br />

• 3 オペランド形式 : この形式には、 デスティネーション・オペランド ( 第 1 オペラン<br />

ド ) と 2 つのソース ・ オペラン ド ( 第 2 および第3 オペラン ド ) が必要である。 こ の<br />

形式では、 第 1 のソース ・ オペラン ド ( 汎用レ ジ ス タ ま たは メ モ リ ・ ロ ケ ー シ ョ ン )<br />

に第 2 のソース ・ オペラン ド ( 即値 ) が掛け られる。 結果はデステ ィ ネ ーシ ョ ン ・ オ<br />

ペラン ド ( 汎用レ ジ ス タ ) にス トアされる。<br />

即値は、 オペラ ン ド と して使用 さ れる と 、 デス テ ィ ネ ー シ ョ ン ・ オペラ ン ド の フ ォ ー<br />

マッ ト の長さに符号拡張される。<br />

結果の上位半分への有効ビ ッ ト のキ ャ リ ー があ っ た と き は、 CF および OF フラグがセッ<br />

ト される。 結果が結果の下位半分に収 ま っ た と き は、 CF および OF フラグがクリアされ る。<br />

IMUL 命令の 3 つの形式は、 積の長さが両オペランドの長さの 2 倍に計算される点では<br />

みな同じである。 1 オペランド形式では、 結果はデスティネーションの長さでストアさ<br />

れる。 しかし、 2 および 3 オペランド形式では、 結果はデスティネーションの長さに切<br />

り捨てられてからデスティネーション ・ レジスタにストアされる。 この切り捨てがある<br />

ので、 CF または OF フ ラ グをテス ト して、 有効ビ ッ ト の脱落がない よ う 保証する必要が<br />

ある。<br />

第 3 巻 : IA-32 基本命令リファレンス 3:573

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!