16ビットマイクロプロセッサであるIntel 8086の各種レジスタと命令セットをまとめた。
レジスタ
汎用
Register | value(H/L) | 日本語 | 用途 |
---|
AX (AH/AL) | | アキュムレータ | 算術演算操作の結果が格納される |
BX (BH/BL) | | ベースレジスタ | セグメントモードでのDSに格納されたデータを指し示すために使用される |
CX (CH/CL) | | カウンタレジスタ | シフトローテート命令とループ命令に使用される |
DX (DH/DL) | | データレジスタ | 算術演算操作とI/O操作に使用される |
インデックス
Register | value | 日本語 | 用途 |
---|
SI | | ソースインデックス | ストリーム操作コマンドでのソースへのポインタとして使用される |
DI | | ディスティネーションインデックス | ストリーム操作コマンドでの転送先へのポインタとして使用される |
特殊
Register | value | 日本語 | 用途 |
---|
IP | | インストラクションポインタ | 次に実行するアセンブリ命令のアドレスを格納する |
SP | | スタックポインタ | スタックのトップを指す |
BP | | スタックベースポインタ | スタックのベースを指す |
セグメント
Register | value | 日本語 | 用途 |
---|
CS | | コードセグメント | |
DS | | データセグメント | |
SS | | スタックセグメント | |
ES | | エクストラセグメント | |
status flags
Register | value(H/L) | 日本語 | 用途 |
---|
FLAGS | | フラグ | プログラムの実行によって変化する CPU の状態を表す |
特殊レジスタの各ビット
flag | value | ビット | 日本語 | セットされる場合 |
---|
CF | | 0 | キャリーフラグ | MSBからのオーバー/ボロー発生時 |
PF | | 2 | パリティフラグ | 下位 8 ビット中で値 1 のビットの合計数が偶数個になったとき |
AF | | 4 | 補助キャリーフラグ | ビット 3 からのオーバー/ボロー発生時 |
ZF | | 6 | ゼロフラグ | ゼロになったとき |
SF | | 7 | サインフラグ | MSBが 1 になったとき |
TF | | 8 | トラップフラグ | シングルステップモード指定時 |
IF | | 9 | 割り込み許可フラグ | 外部(ハードウエア)割り込みの許可時 |
DF | | 10 | 方向フラグ | STD 命令(ストリング命令で使用) |
OF | | 11 | オーバフローフラグ | MSBへのオーバー/ボロー発生時 |
命令セット
データ転送
Mnemonic | Description | Operand |
---|
MOV | | |
PUSH | | |
POP | | |
XCHG | Exchange | |
IN | Input from | |
OUT | Output to | |
XLAT | Transfer Byte to AL | |
LEA | Load EA to register | |
LDS | Load pointer to DS | |
LES | Load pointer to ES | |
LAHF | Load AH with flags | |
SAHF | Store AH into flags | |
PUSHF | Push flags | |
POPF | Pop flags | |
算術
Mnemonic | Description | Operand |
---|
ADD | | |
ADC | Add with Carry | |
INC | Increment | |
AAA | ASCII adjust for add | |
BAA | Decimal Adjust for add | |
SUB | Subtract | |
SSB | Substract with borrow | |
DEC | Decrement | |
NEG | Change sign | |
CMP | Compare | |
AAS | ASCII adjust for subtract | |
DAS | Decimal adjust for subtract | |
MUL | Multiply (unsiged) | |
IMUL | Iingeter multiply (signed) | |
AAM | ASCII adjust for multiply | |
DIV | Divide (unsiged) | |
IDIV | Integer Divide (siged) | |
AAD | Ascii adjust for divide | |
CBW | Convert Byte to Word | |
CWD | Convert Word to Double Word | |
論理
Mnemonic | Description | Operand |
---|
NOT | Invert | |
SHL/SAL | Shift Logical/Arithmetic Left | |
SHR | Shift Logical Right | |
SAR | Shift Arithmetic Right | |
ROL | Rotat Left | |
ROR | Rotat Right | |
RCL | Rotat Through Carry Flag Left | |
RCR | Rotat Through Carry Right | |
AND | And | |
TEST | And Function to Flags, No Result | |
OR | Or | |
XOR | Exclusiv or: | |
文字列操作
Mnemonic | Description | Operand |
---|
REP | Repeat | |
MOVS | Move Byte/Word | |
CMPS | Compare Byte/Word | |
SCAS | Scan Byte/Word | |
LODS | Load Byte/Wd to AL/AX | |
STOS | Stor Byte/Wd from AL/A | |
制御(CONTROL TRANSFER)
Mnemonic | Description | Operand |
---|
CALL | | |
JMP | Unconditional Jump | |
RET | Return from CALL | |
JE/JZ | Jump on Equal/Zero | |
JL/JNGE | Jump on Less/Not Greater | |
JLE/JNG | Jump on Less or Equal/ | |
JB/JNAE | Jump on Below/Not Above | |
JBE/JNA | Jump on Below or Equal/ | |
JP/JPE | Jump on Parity/Parity Even | |
JO | Jump on Overflow | |
JS | Jump on Sign | |
JNE/JNZ | Jump on Not Equal/Not Zero | |
JNL/JGE | Jump on Not Less/Greater | |
JNLE/JG | Jump on Not Less or Equal/ | |
JNB/JAE | Jump on Not Below/Above | |
JNBE/JA | Jump on Not Below or | |
JNP/JPO | Jump on Not Par/Par Odd | |
JNO | Jump on Not Overflow | |
JNS | Jump on Not Sign | |
LOOP | Loop CX Times | |
LOOPZ/LOOPE | Loop While Zero/Equal | |
LOOPNZ/LOOPNE | Loop While Not | |
JCXZ | Jump on CX Zero | |
INT | Interrupt | |
INTO | Interrupt on Overflow | |
IRET | Interrupt Return | |
プロセッサ制御
Mnemonic | Description | Operand |
---|
CLC | Clear Carry | |
CMC | Complement Carry | |
STC | Set Carry | |
CLD | Clear Direction | |
STD | Set Direction | |
CLI | Clear Interrupt | |
STI | Set Interrupt | |
HLT | Halt | |
WAIT | Wait | |
ESC | Escape (to External Device) | |
LOCK | Bus Lock Prefix | |