UMBC Flags Previous | Next

Flags

Different instructions have a different impact on the flag register. The following table describes each instruction and the flag usage:

InstrFormatDescriptionODISZAPC
AAAAAAAdjust alter addition?  ??*P*
AADAADASCII adjust before division?  ***?
AAMAAMASCII adjust after multiply?  **?*?
AASAASASCII adjust after subtraction?  ??*?*
ADCADC reg, reg
ADC mem, reg
ADC reg, mem
ADC reg, immed
ADC accum, immed
Add with carry*  *****
ADDADC reg, reg
ADC mem, reg
ADC reg, mem
ADC reg, immed
ADC accum, immed
Add*  *****
ANDADC reg, reg
ADC mem, reg
ADC reg, mem
ADC reg, immed
ADC accum, immed
Logical AND*  **?*0
CALLCALL nearlabel
CALL farlabel
CALL reg
CALL mem16
CALL mem32
Call a procedure        
CBWCBWConvert byte to word        
CLCCLCClear carry flag       0
CLDCLDClear direction flag 0      
CLICLIClear interrupt flag  0     
CMCCMCComplement carry flag       *
CMPCMPC        
CMPCMP reg, reg
CMP mem, reg
CMP reg, mem
CMP reg, immed
CMP mem, immed
CMP accum, immed
Compare*  *****
CMPSCMPS source, dest
CMPS segreg:source, ES:dest
Compare strings*  *****
CMPSBCMPSBCompare strings*  *****
CMPSWCMPSWCompare strings*  *****
CWDCWDConvert word to doubleword        
DAADAADecimal after addition?  *****
DASDASDecimal adjust after subtraction?  *****
DECDecrement *  *****
DIVDIV reg
DIV mem
Unsigned integer divide?  ?????
ESCESC immed, reg
ESC immed, mem
Escape        
HLTHLTHalt        
IDIVIDIV reg
IDIV mem
Signed intigned integer division?  ?????
IMULIMUL reg
IMUL mem
Signed integer multiply*  ????*
ININ accum, immed
IN accum, DX
Input from port        
INCINC reg
INC mem
Increment*  **** 
INTINT immed
INT 3
Interrupt  O     
INTOINTOInterrupt on overflow  **    
IRETIRETInterrupt return********
JAJA shortlabelJump if above        
JAEJAE shortlabelJump if above or equal        
JBJB shortlabelJump if below        
JBEJBE shortlabelJump if below or equal        
JCJC shortlabelJump if carry        
JEJAE shortlabelJump if equal        
JGJG shortlabelJump if greater        
JGEJGE shortlabelJump if greater or equal        
JLJL shortlabelJump if less        
JLEJLE shortlabelJump if less or equal        
JNAJNA shortlabelJump if not above        
JNAEJNAE shortlabelJump if not above or equal        
JNBJNB shortlabelJump if not below        
JNBEJNBE shortlabelJump if not below or equal        
JNCJNC shortlabelJump if not carry        
JNEJNE shortlabelJump if not equal        
JNGJNG shortlabelJump if not greater        
JNGEJNGE shortlabelJump if not greater or equal        
JNLJNL shortlabelJump if not less        
JNLEJNLE shortlabelJump if not less or equal        
JNOJNO shortlabelJump if not overflow        
JNPJNP shortlabelJump if not parity        
JNSJNS shortlabelJump if not sign        
JNZJNZ shortlabelJump if not zero        
JOJO shortlabelJump if overflow        
JPJP shortlabelJump if parity        
JPEJPE shortlabelJump if parity even        
JPOJPO shortlabelJump if parity odd        
JSJS shortlabelJump if sign        
JZJZ shortlabelJump if zero        
JCXZJCXZ shortlabelJump if CX is zero        
JMPJMP shortlabel
JMP nearlabel
JMP farlabel
JMP reg16
JMP mem16
JMP mem32
Jump unconditionally to label        
LAHFLAHFLoad flags into AH        
LDSLDS reg, mem32Load register and DS        
LEALEA reg, memLoad effective address        
LESLES reg, mem32Load register and ES        
LOCKLOCKLOCK instructionLock the system bus        
LODSLODS mem
LODS segreg:mem
Load string        
LODSBLODSBLoad string        
LODSWLODSWLoad string        
LOOPLOOP shortlabelLoop        
LOOPELOOPE shortlabelLoop if equal        
LOOPZLOOPZ shortlabelLoop if zero        
LOOPNELOOPNE shortlabelLoop if not equal        
LOOPNZLOOPNZ shortlabelLoop if not zero        
MOVMOV reg, reg
MOV mem, reg
MOV reg, mem
MOV reg16, segreg
MOV segreg, reg16
Copies a byte or word        
MOVSMOVS dest, source
MOVS ES:dest, segreg:source
Move string        
MOVSBMOVSBMove string        
MOVSWMOVSWMove string        
MULMUL reg
MUL mem
Unsigned integer multiply*  ????*
NEGNEG reg
NEG mem
Negate*   *****
NOPNOPNo operation        
NOTNOT reg
NOT mem
Logical NOT        
OROR reg, reg
OR mem, reg
OR reg, mem
OR reg, immed
OR mem, immed
OR accum, immed
Logical OR0  **?*0
OUTOUT immed8, accum
OUT DX, accum
Output to port        
POPPOP reg16
POP mem16
POP segreg
Pop from stack        
PUSHPUSH reg16
PUSH mem16
PUSH segreg
Push on stack        
PUSHFPUSHFPush flags        
RCLRCL reg, 1
RCL reg, CL
RCL mem, 1
RCL mem, CL
Rotate carry left*      *
RCRRCR reg, 1
RCR reg, CL
RCR mem, 1
RCR mem, CL
Rotate carry right*      *
REPREP MOVS dest, sourceRepeat string        
REPZREPZ SCAS dest
REPZ SCASB
Conditional repeat string    *   
REPEREPE SCASWConditional repeat string    *   
REPNZREPNZ SCAS dest
REPNZ SCASW
Conditional repeat string    *   
REPNEREPNE SCASBConditional repeat string    *   
RETRET
RET immed8
Return from procedure        
RETNRETN
RETN immed8
Return from near procedure        
RETFRETF
RETF immed8
Return from far procedure        
ROLROL reg, 1
ROL reg, CL
ROL mem, 1
ROL mem, CL
Rotate right*      *
RORROR reg, 1
ROR reg, CL
ROR mem, 1
ROR mem, CL
Rotate right*      *
SAHFSAHFStore AH into flags   *****
SALSAL reg, 1
SAL reg, CL
SAL mem, 1
SAL mem, CL
Shift arithmetic left*  **?**
SARSAR reg, 1
SAR reg, CL
SAR mem, 1
SAR mem, CL
Shift arithmetic right*  **?**
SBBSBB reg, reg
SBB mem, reg
SBB reg, mem
SBB reg, immed
SBB mem, immed
SBB accum, immed
Subtract with borrow*  *****
SCASSCAS dest
SCAS ES:dest
Scan string*  *****
SCASBSCASBScan string*  *****
SCASWSCASWScan string*  *****
SHLSHL reg, 1
SHL reg, CL
SHL mem, 1
SHL mem, CL
Shift left*  **?**
SHRSHR reg, 1
SHR reg, CL
SHR mem, 1
SHR mem, CL
Shift right*  **?**
STCSTCSet carry flag       1
STDSTDSet direction flag 1      
STISTISet interrupt flag  1     
STOSSTOS mem
STOS ES:mem
Store string        
STOSBSTOSWStore string        
STOSBSTOSWStore string        
SUBSUB reg, reg
SUB mem, reg
SUB reg, mem
SUB reg, immed
SUB mem, immed
SUB accum, immed
Subtract*  *****
TESTTEST reg, reg
TEST mem, reg
TEST reg, mem
TEST reg, immed
TEST mem, immed
TEST accum, immed
Test individual bits0  **?*0
WAITWAITWait for coprocessor        
XCHGXCHG reg, reg
XCHG mem, reg
XCHG reg, mem
Exchange        
XLATXLAT
XLAT mem
XLAT segreg:mem
Translate byte        
XORXOR reg, reg
XOR mem, reg
XOR reg, mem
XOR reg, immed
XOR mem, immed
XOR accum, immed
Exclusive OR0  **?*0


Previous | Next

©2004, Gary L. Burt