| UMBC CMSC 211 |
| Symbol | Flag |
|---|---|
| 0 | Overflow |
| D | Direction |
| I | Interrupt |
| S | Sign |
| Z | Zero |
| A | Auxillary Carry |
| P | Parity |
| C | Carry |
Flag settings are shown with the following
| Symbol | Status |
|---|---|
| * | Set/cleared according to results |
| ? | Results unknown |
| 0 | Flag reset/set to zero |
| 1 | Flag set/set to 1 |
| blank | Flag not modified |
| p | Flag set according to parity |
| Instruction | Format | Description | O | D | I | S | Z | A | P | C |
| AAA | AAA | Adjust alter addition | ? | ? | ? | * | P | * | ||
| AAD | AAD | ASCII adjust before division | ? | * | * | ? | * | ? | ||
| AAM | AAM | ASCII adjust after multiply | ? | * | * | ? | * | ? | ||
| AAS | AAS | ASCII adjust after subtraction | ? | ? | ? | * | ? | * | ||
| ADC | ADC reg, reg ADC mem, reg ADC reg, mem ADC reg, immed ADC accum, immed |
Add with carry | * | * | * | * | * | * | ||
| ADD | ADC reg, reg ADC mem, reg ADC reg, mem ADC reg, immed ADC accum, immed |
Add | * | * | * | * | * | * | ||
| AND | ADC reg, reg ADC mem, reg ADC reg, mem ADC reg, immed ADC accum, immed |
Logical AND | * | * | * | ? | * | 0 | ||
| CALL | CALL nearlabel CALL farlabel CALL reg CALL mem16 CALL mem32 |
Call a procedure | ||||||||
| CBW | CBW | Convert byte to word | ||||||||
| CLC | CLC | Clear carry flag | 0 | |||||||
| CLD | CLD | Clear direction flag | 0 | |||||||
| CLI | CLI | Clear interrupt flag | 0 | |||||||
| CMC | CMC | Complement carry flag | * | |||||||
| CMP | CMP | C | ||||||||
| CMP | CMP reg, reg CMP mem, reg CMP reg, mem CMP reg, immed CMP mem, immed CMP accum, immed |
Compare | * | * | * | * | * | * | ||
| CMPS | CMPS source, dest CMPS segreg:source, ES:dest |
Compare strings | * | * | * | * | * | * | ||
| CMPSB | CMPSB | Compare strings | * | * | * | * | * | * | ||
| CMPSW | CMPSW | Compare strings | * | * | * | * | * | * | ||
| CWD | CWD | Convert word to doubleword | ||||||||
| DAA | DAA | Decimal after addition | ? | * | * | * | * | * | ||
| DAS | DAS | Decimal adjust after subtraction | ? | * | * | * | * | * | ||
| DEC | Decrement | * | * | * | * | * | * | |||
| DIV | DIV reg DIV mem |
Unsigned integer divide | ? | ? | ? | ? | ? | ? | ||
| ESC | ESC immed, reg ESC immed, mem |
Escape | ||||||||
| HLT | HLT | Halt | ||||||||
| IDIV | IDIV reg IDIV mem |
Signed integer division | ? | ? | ? | ? | ? | ? | ||
| IMUL | IMUL reg IMUL mem |
Signed integer multiply | * | ? | ? | ? | ? | * | ||
| IN | IN accum, immed IN accum, DX |
Input from port | ||||||||
| INC | INC reg INC mem |
Increment | * | * | * | * | * | |||
| INT | INT immed INT 3 |
Interrupt | O | |||||||
| INTO | INTO | Interrupt on overflow | * | * | ||||||
| IRET | IRET | Interrupt return | * | * | * | * | * | * | * | * |
| JA | JA shortlabel | Jump if above | ||||||||
| JAE | JAE shortlabel | Jump if above or equal | ||||||||
| JB | JB shortlabel | Jump if below | ||||||||
| JBE | JBE shortlabel | Jump if below or equal | ||||||||
| JC | JC shortlabel | Jump if carry | ||||||||
| JE | JAE shortlabel | Jump if equal | ||||||||
| JG | JG shortlabel | Jump if greater | ||||||||
| JGE | JGE shortlabel | Jump if greater or equal | ||||||||
| JL | JL shortlabel | Jump if less | ||||||||
| JLE | JLE shortlabel | Jump if less or equal | ||||||||
| JNA | JNA shortlabel | Jump if not above | ||||||||
| JNAE | JNAE shortlabel | Jump if not above or equal | ||||||||
| JNB | JNB shortlabel | Jump if not below | ||||||||
| JNBE | JNBE shortlabel | Jump if not below or equal | ||||||||
| JNC | JNC shortlabel | Jump if not carry | ||||||||
| JNE | JNE shortlabel | Jump if not equal | ||||||||
| JNG | JNG shortlabel | Jump if not greater | ||||||||
| JNGE | JNGE shortlabel | Jump if not greater or equal | ||||||||
| JNL | JNL shortlabel | Jump if not less | ||||||||
| JNLE | JNLE shortlabel | Jump if not less or equal | ||||||||
| JNO | JNO shortlabel | Jump if not overflow | ||||||||
| JNP | JNP shortlabel | Jump if not parity | ||||||||
| JNS | JNS shortlabel | Jump if not sign | ||||||||
| JNZ | JNZ shortlabel | Jump if not zero | ||||||||
| JO | JO shortlabel | Jump if overflow | ||||||||
| JP | JP shortlabel | Jump if parity | ||||||||
| JPE | JPE shortlabel | Jump if parity even | ||||||||
| JPO | JPO shortlabel | Jump if parity odd | ||||||||
| JS | JS shortlabel | Jump if sign | ||||||||
| JZ | JZ shortlabel | Jump if zero | ||||||||
| JCXZ | JCXZ shortlabel | Jump if CX is zero | ||||||||
| JMP | JMP shortlabel JMP nearlabel JMP farlabel JMP reg16 JMP mem16 JMP mem32 |
Jump unconditionally to label | ||||||||
| LAHF | LAHF | Load flags into AH | ||||||||
| LDS | LDS reg, mem32 | Load register and DS | ||||||||
| LEA | LEA reg, mem | Load effective address | ||||||||
| LES | LES reg, mem32 | Load register and ES | ||||||||
| LOCK | LOCK instruction | Lock the system bus | ||||||||
| LODS | LODS mem LODS segreg:mem |
Load string | ||||||||
| LODSB | LODSB | Load string | ||||||||
| LODSW | LODSW | Load string | ||||||||
| LOOP | LOOP shortlabel | Loop | ||||||||
| LOOPE | LOOPE shortlabel | Loop if equal | ||||||||
| LOOPZ | LOOPZ shortlabel | Loop if zero | ||||||||
| LOOPNE | LOOPNE shortlabel | Loop if not equal | ||||||||
| LOOPNZ | LOOPNZ shortlabel | Loop if not zero | ||||||||
| MOV | MOV reg, reg MOV mem, reg MOV reg, mem MOV reg16, segreg MOV segreg, reg16 |
Copies a byte or word | ||||||||
| MOVS | MOVS dest, source MOVS ES:dest, segreg:source |
Move string | ||||||||
| MOVSB | MOVSB | Move string | ||||||||
| MOVSW | MOVSW | Move string | ||||||||
| MUL | MUL reg MUL mem |
Unsigned integer multiply | * | ? | ? | ? | ? | * | ||
| NEG | NEG reg NEG mem |
Negate | * | * | * | * | * | * | ||
| NOP | NOP | No operation | ||||||||
| NOT | NOT reg NOT mem |
Logical NOT | ||||||||
| OR | OR reg, reg OR mem, reg OR reg, mem OR reg, immed OR mem, immed OR accum, immed |
Logical OR | 0 | * | * | ? | * | 0 | ||
| OUT | OUT immed8, accum OUT DX, accum |
Output to port | ||||||||
| POP | POP reg16 POP mem16 POP segreg |
Pop from stack | ||||||||
| PUSH | PUSH reg16 PUSH mem16 PUSH segreg |
Push on stack | ||||||||
| PUSHF | PUSHF | Push flags | ||||||||
| RCL | RCL reg, 1 RCL reg, CL RCL mem, 1 RCL mem, CL |
Rotate carry left | * | * | ||||||
| RCR | RCR reg, 1 RCR reg, CL RCR mem, 1 RCR mem, CL |
Rotate carry right | * | * | ||||||
| REP | REP MOVS dest, source | Repeat string | ||||||||
| REPZ | REPZ SCAS dest REPZ SCASB |
Conditional repeat string | * | |||||||
| REPE | REPE SCASW | Conditional repeat string | * | |||||||
| REPNZ | REPNZ SCAS dest REPNZ SCASW |
Conditional repeat string | * | |||||||
| REPNE | REPNE SCASB | Conditional repeat string | * | |||||||
| RET | RET RET immed8 |
Return from procedure | ||||||||
| RETN | RETN RETN immed8 |
Return from near procedure | ||||||||
| RETF | RETF RETF immed8 |
Return from far procedure | ||||||||
| ROL | ROL reg, 1 ROL reg, CL ROL mem, 1 ROL mem, CL |
Rotate right | * | * | ||||||
| ROR | ROR reg, 1 ROR reg, CL ROR mem, 1 ROR mem, CL |
Rotate right | * | * | ||||||
| SAHF | SAHF | Store AH into flags | * | * | * | * | * | |||
| SAL | SAL reg, 1 SAL reg, CL SAL mem, 1 SAL mem, CL |
Shift arithmetic left | * | * | * | ? | * | * | ||
| SAR | SAR reg, 1 SAR reg, CL SAR mem, 1 SAR mem, CL |
Shift arithmetic right | * | * | * | ? | * | * | ||
| SBB | SBB reg, reg SBB mem, reg SBB reg, mem SBB reg, immed SBB mem, immed SBB accum, immed |
Subtract with borrow | * | * | * | * | * | * | ||
| SCAS | SCAS dest SCAS ES:dest |
Scan string | * | * | * | * | * | * | ||
| SCASB | SCASB | Scan string | * | * | * | * | * | * | ||
| SCASW | SCASW | Scan string | * | * | * | * | * | * | ||
| SHL | SHL reg, 1 SHL reg, CL SHL mem, 1 SHL mem, CL |
Shift left | * | * | * | ? | * | * | ||
| SHR | SHR reg, 1 SHR reg, CL SHR mem, 1 SHR mem, CL |
Shift right | * | * | * | ? | * | * | ||
| STC | STC | Set carry flag | 1 | |||||||
| STD | STD | Set direction flag | 1 | |||||||
| STI | STI | Set interrupt flag | 1 | |||||||
| STOS | STOS mem STOS ES:mem |
Store string | ||||||||
| STOSB | STOSB | Store string | ||||||||
| STOSW | STOSW | Store string | ||||||||
| SUB | SUB reg, reg SUB mem, reg SUB reg, mem SUB reg, immed SUB mem, immed SUB accum, immed |
Subtract | * | * | * | * | * | * | ||
| TEST | TEST reg, reg TEST mem, reg TEST reg, mem TEST reg, immed TEST mem, immed TEST accum, immed |
Test individual bits | 0 | * | * | ? | * | 0 | ||
| WAIT | WAIT | Wait for coprocessor | ||||||||
| XCHG | XCHG reg, reg XCHG mem, reg XCHG reg, mem |
Exchange | ||||||||
| XLAT | XLAT XLAT mem XLAT segreg:mem |
Translate byte | ||||||||
| XOR | XOR reg, reg XOR mem, reg XOR reg, mem XOR reg, immed XOR mem, immed XOR accum, immed |
Exclusive OR | 0 | * | * | ? | * | 0 |