命令 | オペランド | サイズ | 説明 | フラグ |
AAA | 1 | 加算結果の AL 値をアンパック BCD 数に補正/桁上がり時は AH を+1 | ODITSZAPC ?...??X?X |
|
AAD | 2 | AX にあるアンパック BCD 数を 2 進数に補正 | ODITSZAPC ?...XX?X? |
|
AAM | 2 | 乗算結果の AL 値をアンパック BCD 数に補正し AX へ | ODITSZAPC ?...XX?X? |
|
AAS | 1 | 減算結果の AL 値をアンパック BCD 数に補正/ボロー時は AH をー1 | ODITSZAPC ?...??X?X |
|
ADC | R * RM A , I RM, I |
2+M 1+M 2+M+I |
加算(キャリー考慮) OP1 ← OP1 + OP2 + CF |
ODITSZAPC X...XXXXX |
ADD | R * RM A , I RM, I |
2+M 1+I 2+M+I |
加算 OP1 ← OP1 + OP2 |
ODITSZAPC X...XXXXX |
AND | R * RM A , I RM, I |
2+M 1+I 2+M+I |
論理 AND 演算 OP1 ← OP1 AND OP2 |
ODITSZAPC 0...XX?X0 |
CBW | 1 | AL の最上位ビットを AH の全ビットにコピー(符号拡張) | ODITSZAPC ......... |
|
CLC | 1 | CF をクリア | ........0 | |
CLD | 1 | DF をクリア | .0....... | |
CLI | 1 | IF をクリア | ..0...... | |
CMI | 1 | CF を反転 | ........X | |
CMP | R * RM A , I RM, I |
2+M 1+I 2+M+I |
比較 OP1 - OP2 フラグのみ設定し、OP1 はそのまま |
ODITSZAPC X...XXXXX |
CWD | 1 | AX の最上位ビットを DX の全ビットにコピー(符号拡張) | ODITSZAPC ......... |
|
DAA | 1 | 加算結果 AL 値をパック BCD 数に補正 | ?...XXXXX | |
DAS | 1 | 減算結果 AL 値をパック BCD 数に補正 | ?...XXXXX | |
DEC | R16 RM |
1 2+M |
デクリメント OP ← OP - 1 |
ODITSZAPC X...XXXX. |
DIV | RM | 2+M | 符号なし除算 DX:AX(AX)を OP で割り、商をAX(AL)、余りを DX(AH)に入れる/括弧内は 8 ビット OP 時 |
ODITSZAPC ?...????? |
ESC | I, RM | 2+M | 数値演算コプロセッサ命令の簡略形OP1 は命令を表す 6 ビット値 | ODITSZAPC ......... |
HLT | 1 | プロセッサをホールト状態にする | ......... | |
IDIV | RM | 2+M | 符号付き除算 詳細は DIV 命令に準ずる |
ODITSZAPC ?...????? |
IMUL | RM | 2+M | 符号付き乗算 詳細は MUL 命令に準ずる |
ODITSZAPC X...????X |
IN | A, I8 A, DX |
2 1 |
指定番号の I/O ポートから AX (AL)に入力する |
ODITSZAPC ......... |
INC | R16 RM |
1 2+M |
インクリメント OP ← OP + 1 |
ODITSZAPC X...XXXX. |
INT | 3 I8 |
1 2 |
ソフトウェア割り込み | ODITSZAPC ..00..... |
INTO | 1 | OF セット時にソフトウェア割り込み4 番を発生 | ODITSZAPC ..XX..... |
|
IRET | 1 | 割り込み先からのリターン フラグレジスタを復元 |
ODITSZAPC XXXXXXXXX |
|
LAHF | 1 | AH ← FLAGS 下位 8 ビット | ......... | |
LDS | R16,M32 | 2+M | DS:OP1 ← OP2 OP2 の下位が OP1、上位が DS へ |
ODITSZAPC ......... |
LEA | R16, M | 2+M | OP1 ← OP2 のオフセット | ......... |
LES | R16,M32 | 2+M | ES:OP1 ← OP2 OP2 の下位が OP1、上位が ES へ |
ODITSZAPC ......... |
MOV | A * M R * RM R , I RM, I SR, RM |
1+M 2+M 1+I 2+M+I 2+M |
代入 OP1 ← OP2 |
ODITSZAPC ......... |
MUL | RM | 2+M | 符号なし乗算 AX(AL)に OP を掛け、結果をDX:AX(AX)に入れる(括弧内は 8 ビット OP 時) |
ODITSZAPC X...????X |
NEG | RM | 2+M | 2 の補数を得る(符号反転) OP1 ← - OP1 |
ODITSZAPC X...XXXXX |
NOP | 1 | なにもしない | ......... | |
NOT | RM | 2+M | 1 の補数を得る(ビット反転) OP1 ← NOT OP1 |
ODITSZAPC ......... |
OR | R * RM A , I RM, I |
2+M 1+I 2+M+I |
論理 OR 演算 OP1 ← OP1 OR OP2 |
ODITSZAPC 0...XX?X0 |
OUT | I8, A DX, A |
2 1 |
指定番号の I/O ポートへ AX(AL)を出力する | ODITSZAPC ......... |
POP | R16 M SR |
1 2+M 1 |
スタックのポップ @ OP ← SS:[SP] A SP ← SP + 2 拡張構文 |
ODITSZAPC ......... |
POPF | 1 | フラグレジスタへスタックをポップ | XXXXXXXXX | |
PUSH | R16 M SR |
1 2+M 1 |
スタックのプッシュ @ SP ← SP - 2 A SS:[SP] ← OP 拡張構文 PUSHW/PUSHD |
ODITSZAPC ......... |
PUSHF | 1 | フラグレジスタをスタックへプッシュ | ......... | |
RCL | RM, 1 RM, CL |
2+M 2+M |
左ビット回転(キャリーをはさむ) OP2 はカウント数 CF ← MSB ... ← ... LSB ← CF |
ODITSZAPC X.......X |
RCR | RM, 1 RM, CL |
2+M 2+M |
右ビット回転(キャリーをはさむ) OP2 はカウント数 CF → MSB ... → ... LSB → CF |
ODITSZAPC X.......X |
RET | I |
1 3 |
サブルーチンからのリターン | ODITSZAPC ......... |
RETF | I |
1 3 |
FAR サブルーチンからのリターン | ODITSZAPC ......... |
RETN | I |
1 3 |
NEAR サブルーチンからのリターン | ODITSZAPC ......... |
ROL | RM, 1 RM, CL |
2+M 2+M |
左ビット回転/OP2 はカウント数 CF ← MSB ... ← ... LSB ← MSB |
ODITSZAPC X.......X |
ROR | RM, 1 RM, CL |
2+M 2+M |
右ビット回転/OP2 はカウント数 LSB → MSB ... → ... LSB → CF |
ODITSZAPC X.......X |
SAHF | 1 | FLAGS 下位 8 ビット ← AH | ....XXXXX | |
SAL | RM, 1 RM, CL |
2+M 2+M |
左ビットシフト/OP2 はカウント数 CF ← MSB ... ← ... LSB ← 0 SHL と同等 |
ODITSZAPC X...XX?XX |
SAR | RM, 1 RM, CL |
2+M 2+M |
右ビットシフト/OP2 はカウント数 MSB → MSB ... → ... LSB → CF 符号(MSB)は保存 |
ODITSZAPC 0...XX?XX |
SBB | R * RM A , I RM, I |
2+M 1+M 2+M+I |
減算(キャリー考慮) OP1 ← OP1 - OP2 - CF |
ODITSZAPC X...XXXXX |
SHL | RM, 1 RM, CL |
2+M 2+M |
左ビットシフト/OP2 はカウント数 CF ← MSB ... ← ... LSB ← 0 |
ODITSZAPC X...XX?XX |
SHR | RM, 1 RM, CL |
2+M 2+M |
右ビットシフト/OP2 はカウント数 0 → MSB ... → ... LSB → CF |
ODITSZAPC 0...XX?XX |
STC | 1 | CF をセット | ........1 | |
STD | 1 | DF をセット | .1....... | |
STI | 1 | IF をセット | ..1...... | |
SUB | R * RM A , I RM, I |
2+M 1+M 2+M+I |
減算 OP1 ← OP1 - OP2 |
ODITSZAPC X...XXXXX |
TEST | R * RM A , I RM, I |
2+M 1+I 2+M+I |
テスト OP1 AND OP2 フラグのみ設定し、OP1 はそのまま |
ODITSZAPC 0...XX?X0 |
WAIT | 1 | プロセッサをウェイト状態にする | ......... | |
XCHG | AX* R16 R , RM |
1 2+M |
入れ替え OP1 ← OP2、OP2 ← OP1 |
ODITSZAPC ......... |
XLAT | M |
1 1 |
テーブル変換 AL ← [BX+AL] SR 使用時はダミーOP を指定 |
ODITSZAPC ......... |
XOR | R * RM A , I RM, I |
2+M 1+I 2+M+I |
論理 XOR 演算 OP1 ← OP1 XOR OP2 |
ODITSZAPC 0...XX?X0 |