この節では、プロセッサ命令にどのようなものがあるのか概観します。ここで取り上げる命令はプロセッサ命令のすべてではありません。すべてのプロセッサ命令の一覧が「プロセッサ命令一覧」に示されていますので、そちらもご覧ください。
転送(代入、複写)命令
レジスタやメモリの値をそのままコピーする命令です。定数の代入も可能です。フラグレジスタは変化しません。
MOV 転送 XCHG 値を取り替える LDS 32 ビット値の転送(16 ビット分は DS へ) LES 32 ビット値の転送(16 ビット分は ES へ) LEA オフセットアドレスの代入 PUSH スタックプッシュ POP スタックポップ
算術演算命令
整数の四則演算を行います。乗算と除算では、オペランド値が符号を持つかどうかによって別の処理方法を必要とするため、各々2 種類の命令が用意されています。
加算と減算では、オペランド値が符号を持つかどうかによらず同じ命令で処理できます(そうなるように符号付き整数の内部表現形式が定められているからです)。加算と減算では、16 ビット以上の数値に対する演算を考慮して、桁上がりに対応した命令も用意されています。
ADD 加算 ADC 加算(桁上がりを考慮) SUB 減算 SBB 減算(桁上がりを考慮) MUL 乗算 IMUL 乗算(符号を考慮) DIV 除算 IDIV 除算(符号を考慮) NEG 符号反転
インクリメントとデクリメント
オペランドの値を+1、ー1 する命令です。算術演算と違ってキャリーフラグは変化しません。
INC インクリメント(+1) DEC デクリメント(-1)
論理演算命令
ビットごとの論理演算を行う命令です。
AND 対応ビットが共に 1 なら 1、そうでなければ 0。 OR 対応ビットが共に 0 なら 0、そうでなければ 1。 XOR 対応ビットが共に 0 か 1 なら 0、そうでなければ 1。 NOT 対応ビットが 0 なら 1、1 なら 0。
比較命令
比較命令の演算はフラグレジスタを設定するだけであり、オペランドの値は変更しません。
CMP 減算による比較 TEST AND 演算による比較
シフト命令と回転命令
オペランドの内容をビットシフトします。シフト数を CL レジスタで指定することも可能です。回転(ローテイト)命令では端から桁落ちしたビットが反対側のビットから入ってきます。
SHL 左シフト SHR 右シフト SAL 左シフト(SHL と同じ) SAR 右シフト(符号ビットを保存) ROL 左回転 ROR 右回転 RCL 左回転(キャリーフラグを間にはさんだ回転) RCR 右回転(キャリーフラグを間にはさんだ回転)
分岐命令
プログラムの流れを変更する命令です。(8086 分岐命令)
ストリング命令
配列のような長大なデータを一括して扱う命令であり、通常リピートプレフィクスとともに使用します。(8086 ストリング命令)
プレフィクス命令
次に続く命令の動作を修飾する命令の総称です。プレフィクス命令にはおもに次の 2 種類があります。(8086 プレフィクス命令)
以上の他にも多くの命令が存在します。「プロセッサ命令一覧」では、すべての命令とその機能、オペランド型、機械語サイズ、フラグレジスタへの影響をくまなく記述します。