Complete 8086 instruction set[operands]

Operand types

REG : AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP. SREG : DS, ES, SS, and only as second operand: CS. memory : [BX], [BX+SI+7], variable, etc... immediate: 5, -24, 3Fh, 10001101b, etc... Notes: * When two operands are required for an instruction, they are separated by a comma. For example: REG, memory * When there are two operands, both operands must have the same size (except shift and rotate instructions). For example: AL, DL DX, AX m1 DB ? AL, m1 m2 DW ? AX, m2 * Some instructions allow several operand combinations. For example: memory, immediate REG, immediate memory, REG REG, SREG * Some examples contain macros, so it is advisable to use Shift + F8 hot key to "Step Over" (to make macro code execute at maximum speed set step delay to zero), otherwise emulator will step through each instruction of a macro. Here is an example that uses PRINTN macro: #make_COM# include '' ORG 100h MOV AL, 1 MOV BL, 2 PRINTN 'Hello World!' ; macro. MOV CL, 3 PRINTN 'Welcome!' ; macro. RET


These marks are used to show the state of the flags: 1 - instruction sets this flag to 1. 0 - instruction sets this flag to 0. r - flag value depends on result of the instruction. ? - flag value is undefined (may be 1 or 0).


Some instructions generate exactly the same machine code, so disassembler may have a problem decoding to your original code. This is especially true for Conditional Jump instructions.