導入
x86命令セットは、時間の経過とともに多くの変更を受けてきました。それらのほとんどは、新しい機能を提供するために初期の命令セットに追加されたものにすぎません。

整数命令セット
これは 8086 ~ 8088 プロセッサ用の完全な命令セットであり、これらの命令のすべてではないにしても、ほとんどは 32 ビット モードでアクセスできます。その後、 16 ビットの対応物 (ax、bx など) ではなく、 32 ビットのレジスタと値 (eax、ebx など) で動作します。
8086/8088 のオリジナル説明書
| 名前 | センス | 翻訳 | 注意事項 |
|---|---|---|---|
| AAA | A SCII A調整後に AL を調整する | 加算後のALレジスタを調整(ASCIIモード) | 解凍された BCDエンコーディングで使用されます |
| AAD | SCII A分割後の AX 調整 | 除算後のAXレジスタを調整(ASCIIモード) | アンパックされた BCD エンコーディングで使用され、元の命令セットにはバグがありましたが、NEC V20 では「修正」され、多くの非互換性が発生しました。 |
| AAM | SCII A多重化後の AX 調整 | 乗算後に AX レジスタを調整します (ASCII モード) | 解凍された BCD エンコーディングで使用されます |
| AAS | A SCII A減算後の AL 調整 | 減算後のALレジスタを調整します(ASCIIモード) | 解凍された BCD エンコーディングで使用されます |
| ADC | キャリー付き加算 | 2 つの整数とキャリー フラグを加算します。 | 結果は最初のオペランドを置き換えます |
| 追加 | 追加 | 2 つの整数を加算します | 結果は最初のオペランドを置き換えます |
| そして | 論理積 | オペランドの論理積を実行します。 | 結果は最初のオペランドを置き換えます |
| 電話 | 電話の手順 | プロシージャを呼び出す | |
| CBW | バイトをワードに変換 | バイトをワードに変換 | ALレジスタをAXに拡張 |
| CLC | クリアキャリーフラグ | キャリーフラグをゼロに設定します | |
| CLD | キー方向フラグ | 方向フラグをゼロに設定します | |
| CLI | キー割り込みフラグ | 割り込みフラグをゼロに設定します | |
| CMC | 補数キャリーフラグ | キャリーフラグを反転します | |
| CMP | 比較する | 2 つの整数を (算術的に) 比較します。 | オペランド間の違いに基づいてフラグを配置します。 |
| CMPSzz | コンプは文字列です | 2 つの文字列のバイト/ワードを比較します | ニーモニック: CMPS、CMPSB、CMPSW |
| CWD | ワードをダブルワードに変換 | 単語をダブルワードに変換します | AXレジスタをDX:AXに拡張 |
| DAA | 10 進数A加算後の AL を調整する | 加算後のALレジスタを調整します(10進モード) | 圧縮された BCD エンコーディングで使用されます |
| DAS | 10進数A減算後の AL 調整 | 減算後のALレジスタを調整します(10進モード) | 圧縮された BCD エンコーディングで使用されます |
| 12月 | 1 ずつ減算します | 整数をデクリメントします | オペランドから 1 つを削除します |
| ディビジョン | 符号なし除算 | 符号なし整数で割る | 被除数はレジスタ AX/DX:AX で、商は AL/AX に、剰余は AH/DX に書き込まれます。 |
| ESC | 逃げる | 浮動小数点演算ユニットと併用 | |
| HLT | 停止 | シャットダウン状態に入る | |
| IDIV | 符号付き除算 | 符号付き整数で割る | 被除数はレジスタ AX/DX:AX で、商は AL/AX に、剰余は AH/DX に書き込まれます。 |
| イムル | 複数回署名済み | 符号付き整数を掛ける | 係数は AL/AX レジスタであり、積は AX/DX:AX に書き込まれます。 |
| で | ポートから投入 | 港からのベッド | 宛先はAL/AXレジスタです |
| 株式会社 | 1ずつ増加 | 整数をインクリメントする | オペランドに 1 を追加します |
| INT | 通話を中断する手順 | オペランドで指定された割り込みを呼び出します | |
| の中へ | オーバーフローの場合に中断プロシージャを呼び出す | オーバーフローフラグが1の場合、オーバーフロー割り込みを呼び出します。 | |
| アイレット | 戻るを中断します | 中断からの復帰 | |
| JCC | 条件が満たされた場合にジャンプ | 条件が true の場合にジャンプします | ニーモニック: JA、JAE、JB、JBE、JC、JCXZ、JE、JG、JGE、JL、JLE、JNA、JNAE、JNB、JNBE、JNC、JNE、JNG、JNGE、JNL、JNLE、JNO、JNP、JNS、 JNZ、JO、JP、JPE、JPO、JS、JZ |
| JMP | ジャンプ | ジャンプ(無条件) | |
| LAHF | ロードFがAHに遅れる | フラグレジスタをAHレジスタにコピーします | |
| LDS | Far Pointer を使用してDS をロードする | farポインタを DS レジスタ (セグメント) とオペランド (オフセット) にロードします。 | |
| レア | ロード実効アドレス | 2 番目のオペランドのアドレスを最初のオペランドにロードします。 | |
| ザ | Far Pointer を使用してES をロードする | farポインタを ES レジスタ (セグメント) とオペランド (オフセット) にロードします。 | |
| ロック | LOCK #信号プレフィックスをアサート | 次の命令のバスをロックするプレフィックス | マルチプロセッサ プラットフォームに使用されます。 |
| LODSzz | ロード文字列 | 文字列からバイト/ワードをコピーする | 宛先は AL/AX レジスタです。ニーモニック: LODS、LODSB、LODSW |
| LOOPcc | カウンタに従ってループする | カウンタをデクリメントし、条件が true の場合にジャンプします | カウンタはCXレジスタです。ニーモニック: LOOP、LOOPE、LOOPNE、LOOPNZ、LOOPZ |
| MOV | 動く | 2 番目のオペランドを最初のオペランドにコピーします | |
| MOVSzz | 文字列から文字列へ移動 | ある文字列から別の文字列にバイト/ワードをコピーする | ニーモニック: MOVS、MOVSB、MOVSW |
| MUL | 署名なしのマルティリー | 符号なし整数を掛ける | 係数は AL/AX レジスタであり、積は AX/DX:AX に書き込まれます。 |
| NEG | 2 の補数否定 | オペランドの逆を計算します (2 の補数による否定) | 結果はオペランドを置き換えます |
| NOP | No.操作 | 何もしない | |
| ない | 1 の補数の否定 | 論理否定(1の補数による否定)を実行します。 | 結果はオペランドを置き換えます |
| 金 | 包含論理和 | オペランドの包含論理和を実行します。 | 結果は最初のオペランドを置き換えます |
| 外 | ポートに出力 | ポートに書き込みます | ソースはAX/ALレジスタです |
| ポップ | スタックから値をポップする | オペランドレジスタへのポップ | |
| ポップフ | ポップフラグはスタックから登録します | フラグレジスタまでスクロールします | |
| 押す | 値をスタックにプッシュする | オペランドレジスタをスタックする | |
| プッシュ | フラグレジスタをスタックにプッシュする | フラグのレジスタをスタックする | |
| RCL | ローテーションスルーキャリー左 | ホールドフラグにより左回転 | |
| 心肺蘇生法 | ローテーションスルーキャリーライト | ホールドフラグにより右回転 | |
| REPcc | 文字列操作のプレフィックスを繰り返す | 文字列に対して操作を繰り返すための接頭辞 | ニーモニック: REP、REPE、REPNE、REPNZ、REPZ |
| RET | 骨壷の返却手続き | プロシージャからの戻り値 | |
| ロール | 左に回転 | 左に回転 | |
| MMR | 右回転 | 右に回転 | |
| SAHF | AH をフラグに保存する | AHレジスタをフラグレジスタにコピーします。 | |
| SAL | 算術的に左にシフト | 算術左シフト | SHLと同じ命令 |
| SAR | 算術右シフト | 右への算術シフト | SHRと混同しないでください |
| SBB | B orrow による整数の減算 | 2 つの整数を減算し、キャリー フラグを追加します | 結果は最初のオペランドを置き換えます |
| SCASzz | 文字列をスキャン | 文字列のバイト/ワードを比較する | 参照は AL/AX レジスタです。ニーモニック: SCAS、SCASB、SCASW |
| SHL | 左にシフト | 論理左シフト | SALと同じ指示 |
| SHR | 右にシフト | 論理右シフト | SARと混同しないでください |
| STC | キャリーフラグの設定 | ホールドフラグを1に設定します | |
| 性病 | 方向フラグの設定 | 方向フラグを 1 に設定します | |
| その | 割り込みフラグの設定 | 割り込みフラグを 1 に設定します | |
| STOSzz | 文字列に格納する | 文字列のバイト/ワードにコピーする | ソースは AL/AX レジスタです。ニーモニック: STOS、STOSB、STOSW |
| サブ | 減算 | 2 つの整数を減算します | 結果は最初のオペランドを置き換えます |
| テスト | 論理比較 | 2 つのオペランドを (論理的に) 比較します。 | オペランド間の論理積の結果に従ってフラグを配置します。 |
| 待って | 待って | プロセッサのBUSYピンがアイドル状態の間待機します。 | 浮動小数点演算ユニットと併用 |
| XCHG | 交換 | 2 つのオペランドの内容を交換します | |
| XLAT | テーブルルックアップ変換 | テーブル間のデータ変換 | |
| XOR | 排他的論理和 | オペランドの排他的論理和を実行します。 | 結果は最初のオペランドを置き換えます |
特定のプロセッサへの追加
80186/80188プロセッサへの追加
バウンド、エンター、INSB、INSW、LEAVE、OUTSB、OUTSW、POPA、PUSHA、PUSHW

80286プロセッサへの追加
ARPL、CLTS、LAR、LGDT、LIDT、LLDT、LMSW、ロードオール、LSL、LTR、SGDT、SIDT、SLDT、SMSW、STR、VERR、VERW
80386プロセッサへの追加
BSF、BSR、BT、BTC、 BTR 、BTS、CDQ、CMPSD、CWDE、INSD、IRETD、IRETDF、IRETF、JECXZ、LFS、LGS、LSS、LODSD、LOOPD、LOOPED、LOOPNED、LOOPNZD、LOOPZD、MOVSD、MOVSX、 MOVZX、OUTSD、POPAD、POPFD、PUSHAD、PUSHD、PUSHFD、SCASD、SETA、SETAE、SETB、SETBE、SETC、SETE、SETG、SETGE、SETL、SETLE、SETNA、SETNAE、SETNB、SETNBE、SETNC、SETNE、SETNG、 SETNGE、SETNL、SETNLE、SETNO、SETNP、SETNS、SETNZ、SETO、SETP、SETPE、SETPO、SETS、SETZ、SHLD、SHRD、STOSD
80486プロセッサへの追加
BSWAP、CMPXCHG、CPUID、INVD、INVLPG、RSM、WBINVD、XADD
Pentium プロセッサへの追加機能
CMPXCHG8B、RDMSR、RDPMC*、RDTSC、WRMSR
- RDPMC は、Pentium Pro プロセッサおよび Pentium MMX プロセッサとともに導入されました。
Pentium Pro プロセッサへの追加機能
CMOVA、CMOVAE、CMOVB、CMOVB、CMOVE、CMOVG、CMOVGE、CMOVL、CMOVLE、CMOVNA、CMOVNAE、CMOVNB、CMOVNBE、CMOVNC、CMOVNE、CMOVNG、CMOVNGE、CMOVNL、CMOVNLE、CMOVNO、CMOVNP、CMOVNS、CMOVNZ、CMOVO、 MOVP、 CMOVPE、CMOVPO、CMOVS、CMOVZ、SYSENTER、SYSEXIT、UD2

AMD K7プロセッサへの追加機能
- SYSCALL – SYSENTER 命令と同等の AMD プロセッサ固有の機能。
- SYSRET – SYSEXIT 命令と同等の AMD プロセッサ固有の機能。
Pentium IIIプロセッサへの追加機能
SSEの機能
MASKMOVQ、MOVNTPS、MOVNTQ、PREFETCH0、PREFETCH1、PREFETCH2、PREFETCHNTA、SFENCE (メモリ順序付け)
Pentium 4 プロセッサへの追加機能
SSE2の機能
CLFLUSH、LFENCE、MASKMOVDQU、MFENCE、MOVNTDQ、MOVNTI、MOVNTPD、PAUSE (キャッシュ可能性のため)
SSE3 機能をサポートする Pentium 4 プロセッサへの追加
ハイパースレッディングをサポートするプロセッサ
SSE3の機能
MONITOR、MWAIT (スレッド同期用)
Pentium 4 6×2 プロセッサへの追加機能
VMPTRLD、VMPTRST、VMCLEAR、VMREAD、VMWRITE、VMCALL、VMLAUNCH、VMRESUME、VMXOFF、VMXON (VMX 命令)

x86-64 プロセッサの追加
CMPXCHG16B
