24531904_j
24531904_j 24531904_j
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
- Seite 534 und 535: FPTAN—Partial Tangent オペコ
- Seite 536 und 537: FRNDINT—Round to Integer オペ
- Seite 538 und 539: FRSTOR—Restore FPU State ( 続き
- Seite 540 und 541: FSAVE/FNSAVE—Store FPU State (
- Seite 542 und 543: FSCALE—Scale オペコード 命
- Seite 544 und 545: FSIN—Sine オペコード 命令
- Seite 546 und 547: FSINCOS—Sine and Cosine オペコ
- Seite 548 und 549: FSQRT—Square Root オペコード
- Seite 550 und 551: FST/FSTP—Store Real オペコー
- Seite 552 und 553: FST/FSTP—Store Real ( 続き ) #A
- Seite 554 und 555: FSTCW/FNSTCW—Store Control Word (
- Seite 556 und 557: FSTENV/FNSTENV—Store FPU Environm
- Seite 558 und 559: FSTSW/FNSTSW—Store Status Word (
- Seite 560 und 561: FSUB/FSUBP/FISUB—Subtract ( 続
- Seite 562 und 563: FSUBR/FSUBRP/FISUBR—Reverse Subtr
- Seite 564 und 565: FSUBR/FSUBRP/FISUBR—Reverse Subtr
- Seite 566 und 567: FTST—TEST オペコード 命令
- Seite 568 und 569: FUCOM/FUCOMP/FUCOMPP—Unordered Co
- Seite 570 und 571: FWAIT—Wait 本章の 「WAIT」
- Seite 572 und 573: FXAM—Examine ( 続き ) 実アド
- Seite 574 und 575: FXCH—Exchange Register Contents (
- Seite 576 und 577: FXTRACT—Extract Exponent and Sign
- Seite 578 und 579: FYL2X—Compute y ∗ log 2 x ( 続
- Seite 580 und 581: FYL2XP1—Compute y ∗ log 2 (x +1
- Seite 582 und 583: IDIV—Signed Divide オペコー
- Seite 586 und 587: IMUL—Signed Multiply ( 続き ) 2
- Seite 588 und 589: IMUL—Signed Multiply ( 続き )
- Seite 590 und 591: IN—Input from Port ( 続き ) 操
- Seite 592 und 593: INC—Increment by 1 オペコー
- Seite 594 und 595: INS/INSB/INSW/INSD—Input from Por
- Seite 596 und 597: INS/INSB/INSW/INSD—Input from Por
- Seite 598 und 599: INT n/INTO/INT 3—Call to Interrup
- Seite 600 und 601: INT n/INTO/INT 3—Call to Interrup
- Seite 602 und 603: INT n/INTO/INT 3—Call to Interrup
- Seite 604 und 605: INT n/INTO/INT 3—Call to Interrup
- Seite 606 und 607: INT n/INTO/INT 3—Call to Interrup
- Seite 608 und 609: INT n/INTO/INT 3—Call to Interrup
- Seite 610 und 611: INVD—Invalidate Internal Caches (
- Seite 612 und 613: IRET/IRETD—Interrupt Return オ
- Seite 614 und 615: IRET/IRETD—Interrupt Return ( 続
- Seite 616 und 617: IRET/IRETD—Interrupt Return ( 続
- Seite 618 und 619: IRET/IRETD—Interrupt Return ( 続
- Seite 620 und 621: Jcc—Jump if Condition Is Met オ
- Seite 622 und 623: Jcc—Jump if Condition Is Met (
- Seite 624 und 625: JMP—Jump オペコード 命令
- Seite 626 und 627: JMP—Jump ( 続き ) 操作 IF nea
- Seite 628 und 629: JMP—Jump ( 続き ) END; TASK-GAT
- Seite 630 und 631: JMP—Jump ( 続き ) #PF ( フォ
- Seite 632 und 633: JMPE—Jump to Intel ® Itanium ®
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