| Type | Mnemonic (Example) | Binary Pattern | Explanation |
|---|---|---|---|
| Prefix | 0x66 |
01100110 |
Operand-size override (required for 16-bit regs in 32-bit mode) |
| MOV | MOV AX, imm16 |
10111rrr + lo + hi |
Load 16-bit immediate into reg. rrr: AX=000, CX=001, DX=010, BX=011. Little-endian immediate follows. |
| MOV | MOV AL, imm8 |
10110rrr + imm |
Load 8-bit immediate. rrr: AL=000, CL=001, DL=010, BL=011, AH=100, CH=101, DH=110, BH=111 |
| ADD | ADD AL, imm8 |
00000100 + imm |
Shortform: add immediate to AL. No ModR/M needed. |
| ADD | ADD AX, imm16 |
00000101 + lo + hi |
Shortform: add 16-bit immediate to AX. No ModR/M needed. |
| ADD | ADD r8, imm8 |
10000000 + ModR/M + imm |
ModR/M: 11 000 rrr — extension field must be 000. rrr = destination register. |
| ADD | ADD r16, imm8 |
10000011 + ModR/M + imm |
ModR/M: 11 000 rrr. Sign-extends 8-bit immediate to 16 bits. |
| ADD | ADD r/m8, r8 |
00000000 + ModR/M |
ModR/M: 11 src dst — bits 5-3 = source, bits 2-0 = destination. |
| ADD | ADD r/m16, r16 |
00000001 + ModR/M |
Same ModR/M convention as above. Requires 0x66 prefix for 16-bit operands. |
| ID (Binary) | 8-bit reg | 16-bit reg | ModR/M structure (register mode) |
|---|---|---|---|
| 000 | AL | AX |
Bits 7-6: 11 (register-to-register mode) Bits 5-3: source register ID Bits 2-0: destination register ID For ADD r/m, imm (0x80/0x83):DDOOOLLL DD: 11 immediate, 00 address no displacement, 01 8-bit displacement, 16-bit displacement OOO: operation 000 for add LLL: register location |
| 001 | CL | CX | |
| 010 | DL | DX | |
| 011 | BL | BX | |
| 100 | AH | — | |
| 101 | CH | — | |
| 110 | DH | — | |
| 111 | BH | — |
Opcode: 00000000 (8-bit) or 00000001 (16-bit)
ModR/M byte: 11 + [Source ID] + [Dest ID]
Example (ADD CL, BL): dst=CL=001, src=BL=011 -> 00000000 11011001
Example (ADD AX, BX): dst=AX=000, src=BX=011 -> 00000001 11011000