UMBC CMSC 211

UMBC | CSEE


Key

In the following table, the flags are indicated as:

Symbol Flag
0Overflow
DDirection
IInterrupt
SSign
ZZero
AAuxillary Carry
PParity
CCarry

Flag settings are shown with the following
Symbol Status
*Set/cleared according to results
?Results unknown
0Flag reset/set to zero
1Flag set/set to 1
blank Flag not modified
pFlag 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



 

UMBC | CSEE