x86 命令セット – 定義

導入

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

 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ロードFAHに遅れるフラグレジスタを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

 x86 命令セット - 定義

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

 x86 命令セット - 定義

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 命令セット - 定義

x86-64 プロセッサの追加

CMPXCHG16B

  1. قائمة أوامر إكس 86 – arabe
  2. Conjunt d’instruccions x86 – catalan
  3. X86 instruction listings – anglais
  4. Anexo:Instrucciones x86 – espagnol
  5. فهرست دستورهای ایکس۸۶ – persan
  6. Расширения архитектуры x86 – russe

x86 命令セット – 定義・関連動画

サイエンス・ハブ

知識の扉を開け、世界を変える。