24531904_j
24531904_j 24531904_j
CMPS/CMPSB/CMPSW/CMPSD—Compare String Operands ( 続き ) 実アドレス・モード例外 #GP メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 #SS メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 仮想 8086 モード例外 #GP(0) メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 #SS(0) メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 #PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。 #AC(0) アライメン ト ・ チェ ッ クがイネーブルにされていて、 アラ イ メン ト が合わないメモ リ 参照が行われた場合。 3:434 第 3 巻 : IA-32 基本命令リファレンス
CMPXCHG—Compare and Exchange オペコード 命令 説明 0F B0/r CMPXCHG r/m8,r8 AL を r/m8 と比較し、等しい場合は ZF をセットし、r8 を r/m8 に ロードする。等しくない場合は ZF をクリアし、r/m8 を AL にロー ドする。 0F B1/r CMPXCHG r/m16,r16 AX を r/m16 と比較し、等しい場合は ZF をセットし、r16 を r/m16 にロードする。等しくない場合は ZF をクリアし、r/m16 を AL に ロードする。 0F B1/r CMPXCHG r/m32,r32 EAX を r/m32 と比較し、等しい場合は ZF をセットし、r32 を r/m32 にロードする。等しくない場合は ZF をクリアし、r/m32 を AL にロードする。 説明 ( オペラン ド のサイズに従って ) AL、 AX、 または EAX レジスタの値を第1オペラン ド ( デステ ィ ネーシ ョ ン ・ オペラン ド ) と比較する。 2 つの値が等しい場合は、 第 2 オペラ ンド ( ソース ・オペランド ) がデスティネーション・オペランドにロードされる。 等し くない場合は、 デスティネーション・オペランドがAL、 AX、 または EAX レジスタに ロード される。 この命令は、 前に LOCK プ リ フ ィ ッ ク ス を付け る こ と に よ り 、 自動的に実行 さ せる こ と ができ る。 プロセッサのバス と のインタ フ ェ ースを単純にするため、 デステ ィ ネーシ ョ ン ・ オペラ ン ド は比較の結果にかかわ り な く 書き込みサイ ク ルを受け る。 比較が失敗し た場合はデステ ィ ネーシ ョ ン ・ オペラン ド がデステ ィ ネーシ ョ ンに書き戻され、 比較が 成功した場合は ソ ー ス ・ オペラ ン ド がデス テ ィ ネ ー シ ョ ン に書き込まれる。 ( プロセッサ は、 同時にロッ ク書き込みも伴わずにロッ ク読み取りを生じるこ とは決してない。 ) 操作 (* accumulator = AL, AX, or EAX, depending on whether *) (* a byte, word, or doubleword comparison is being performed*) IF Itanium System Environment AND External_Atomic_Lock_Required AND DCR.lc THEN IA-32_Intercept(LOCK,CMPXCHG); IF accumulator = DEST THEN ZF ← 1 DEST ← SRC ELSE ZF ← 0 accumulator ← DEST FI; 影響を受けるフラグ デステ ィ ネーシ ョ ン ・ オペラン ド と AL、 AX、 または EAX レジスタの値が等しい場合は ZF フラグがセッ ト され、 等し く ない場合はク リ アされる。 CF、 PF、 AF、 SF、 OF フラ グは比較演算の結果に従 っ てセ ッ ト さ れる。 第 3 巻 : IA-32 基本命令リファレンス 3:435
- Seite 396 und 397: AAS ─ ASCII Adjust AL After Subtr
- Seite 398 und 399: ADC ─ Add with Carry ( 続き )
- Seite 400 und 401: ADD ─ Add ( 続き ) 保護モー
- Seite 402 und 403: AND ─ Logical AND ( 続き ) 保
- Seite 404 und 405: ARPL ─ Adjust RPL Field of Segmen
- Seite 406 und 407: BOUND ─ Check Array Index Against
- Seite 408 und 409: BSF ─ Bit Scan Forward ( 続き )
- Seite 410 und 411: BSR ─ Bit Scan Reverse ( 続き )
- Seite 412 und 413: BT ─ Bit Test オペコード 命
- Seite 414 und 415: BTC ─ Bit Test and Complement オ
- Seite 416 und 417: BTR ─ Bit Test and Reset オペ
- Seite 418 und 419: BTS ─ Bit Test and Set オペコ
- Seite 420 und 421: CALL ─ Call Procedure オペコ
- Seite 422 und 423: CALL ─ Call Procedure ( 続き )
- Seite 424 und 425: CALL ─ Call Procedure ( 続き )
- Seite 426 und 427: CALL ─ Call Procedure ( 続き )
- Seite 428 und 429: CALL ─ Call Procedure ( 続き )
- Seite 430 und 431: CBW/CWDE ─ Convert Byte to Word/C
- Seite 432 und 433: CLC ─ Clear Carry Flag オペコ
- Seite 434 und 435: CLI ─ Clear Interrupt Flag オペ
- Seite 436 und 437: CLTS—Clear Task-Switched Flag in
- Seite 438 und 439: CMOVcc—Conditional Move オペコ
- Seite 440 und 441: CMOVcc—Conditional Move ( 続き
- Seite 442 und 443: CMP—Compare Two Operands オペ
- Seite 444 und 445: CMPS/CMPSB/CMPSW/CMPSD—Compare St
- Seite 448 und 449: CMPXCHG—Compare and Exchange (
- Seite 450 und 451: CMPXCHG8B—Compare and Exchange 8
- Seite 452 und 453: CPUID—CPU Identification オペ
- Seite 454 und 455: CPUID—CPU Identification ( 続き
- Seite 456 und 457: CPUID—CPU Identification ( 続き
- Seite 458 und 459: CWDE—Convert Word to Doubleword
- Seite 460 und 461: DAS—Decimal Adjust AL after Subtr
- Seite 462 und 463: DEC—Decrement by 1 ( 続き ) #AC
- Seite 464 und 465: DIV—Unsigned Divide ( 続き ) FI
- Seite 466 und 467: ENTER—Make Stack Frame for Proced
- Seite 468 und 469: ENTER—Make Stack Frame for Proced
- Seite 470 und 471: F2XM1—Compute 2 x -1 ( 続き )
- Seite 472 und 473: FADD/FADDP/FIADD—Add オペコー
- Seite 474 und 475: FADD/FADDP/FIADD—Add ( 続き )
- Seite 476 und 477: FBLD—Load Binary Coded Decimal
- Seite 478 und 479: FBSTP—Store BCD Integer and Pop
- Seite 480 und 481: FBSTP—Store BCD Integer and Pop (
- Seite 482 und 483: FCLEX/FNCLEX—Clear Exceptions オ
- Seite 484 und 485: FCMOVcc—Floating-Point Conditiona
- Seite 486 und 487: FCOM/FCOMP/FCOMPP—Compare Real (
- Seite 488 und 489: FCOMI/FCOMIP/FUCOMI/FUCOMIP—Compa
- Seite 490 und 491: FCOMI/FCOMIP/ FUCOMI/FUCOMIP—Comp
- Seite 492 und 493: FCOS—Cosine ( 続き ) 追加の
- Seite 494 und 495: FDIV/FDIVP/FIDIV—Divide オペコ
CMPS/CMPSB/CMPSW/CMPSD—Compare String Operands ( 続き )<br />
実アドレス・モード例外<br />
#GP メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、<br />
または GS セグ メ ン ト の範囲外の場合。<br />
#SS メモリ ・ オペランドの実効アドレスが SS セグメン ト の範<br />
囲外の場合。<br />
仮想 8086 モード例外<br />
#GP(0) メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、<br />
または GS セグ メ ン ト の範囲外の場合。<br />
#SS(0) メモリ ・ オペランドの実効アドレスが SS セグメン ト の範<br />
囲外の場合。<br />
#PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。<br />
#AC(0) アライメン ト ・ チェ ッ クがイネーブルにされていて、 アラ<br />
イ メン ト が合わないメモ リ 参照が行われた場合。<br />
3:434 第 3 巻 : IA-32 基本命令リファレンス