This document summarizes the flags register in 8086 processors. It has two main sections. The first section explains that the flags register is 16 bits wide and contains status and control flags that indicate the current state of the processor. The second section details the different types of flags, including status flags like carry, parity, zero, and overflow flags, and control flags like trap, interrupt, and direction flags. It provides details on the purpose and location of each individual flag in the 16-bit register.
2. WHAT IS FLAGS REGISTER??
THE FLAGS REGISTER IS THE STATUS REGISTER IN INTEL X86
MICROPROCESSORS THAT CONTAINS THE CURRENT STATE OF
THE PROCESSOR. THIS REGISTER IS 16 BITS WIDE. ITS
SUCCESSORS, THE EFLAGS AND RFLAGS REGISTERS, ARE 32
BITS AND 64 BITS WIDE, RESPECTIVELY. THE WIDER REGISTERS
RETAIN COMPATIBILITY WITH THEIR SMALLER PREDECESSORS.
WE ARE GOING TO DISCUSS ABOUT THE FLAGS REGISTERS
HERE.
3. CATEGORY OF FLAGS REGISTERS
THERE ARE 2 TYPES OF FLAGS REGISTER.
• STATUS FLAGS
• CONTROL FLAGS.
THIS REGISTER IS 16 BITS WIDE. THE STATUS FLAGS ARE LOCATED
IN 0, 2, 4, 6, 7 AND 11 BITS. CONTROL FLAGS ARE LOCATED IN 8, 9
AND 10 BITS AND THE SYSTEM FLAGS ARE LOCATED IN 12,13 AND
14 BITS AND OTHERS LEFT BITS ARE RESERVED BITS.
4. STATUS FLAGS THERE ARE 6 STATUS FLAGS IN
8086 PROCESSOR.
• CARRY FLAG
• PARITY FLAG
• AUXILIARY FLAG
• ZERO FLAG
• SIGN FLAG
• OVERFLOW FLAG
5.
6. CARRY FLAG
IN 8086 PROCESSORS THE CARRY FLAG IS A SINGLE BIT IN A SYSTEM
STATUS REGISTER USED TO INDICATE WHEN AN ARITHMETIC CARRY OR
BORROW HAS BEEN GENERATED OUT OF THE MOST SIGNIFICANT ALU BIT
POSITION. THE CARRY FLAG ENABLES NUMBERS LARGER THAN A SINGLE
ALU WIDTH TO BE ADDED/SUBTRACTED BY CARRYING A BINARY DIGIT
FROM A PARTIAL ADDITION/SUBTRACTION TO THE LEAST SIGNIFICANT BIT
POSITION OF A MORE SIGNIFICANT WORD. IT IS LOCATED IN THE 0 BITS IF
A 8086 PROCESSOR.
7. PARITY FLAG
IN 8086 PROCESSORS THE PARITY FLAG INDICATES IF THE NUMBER OF SET
BITS IS ODD OR EVEN IN THE BINARY REPRESENTATION OF THE RESULT OF
THE LAST OPERATION. IT IS NORMALLY A SINGLE BIT(2) IN A PROCESSOR
STATUS REGISTER. FOR EXAMPLE, ASSUME A MACHINE WHERE A SET
PARITY FLAG INDICATES EVEN PARITY. IF THE RESULT OF THE LAST
OPERATION WERE 26 (11010 IN BINARY), THE PARITY FLAG WOULD BE 0
SINCE THE NUMBER OF SET BITS IS ODD. SIMILARLY, IF THE RESULT WERE
102 (1100110 IN BINARY) THEN THE PARITY FLAG WOULD BE 1.
8. AUXILIARY FLAG
THE AUXILIARY FLAG IS A FLAG STORED IN THE FLAGS
REGISTER ON ALL 8086 PROCESSORS. IT IS BIT 4. IT IS USED
TO INDICATE WHEN AN ARITHMETIC CARRY OR BORROW HAS
BEEN GENERATED OUT OF THE 4 LEAST SIGNIFICANT BITS. IT
IS PRIMARILY USED IN BCD ARITHMETIC.
AUXILIARY FLAG IS SET (AF=1) IF THERE IS A CARRY FROM
LOW NIBBLE TO HIGH NIBBLE OR A BORROW FROM A HIGH
NIBBLE TO LOW NIBBLE OF THE LOW ORDER 8- BIT OF A 16-
BIT NUMBER.
9. ZERO FLAG
THE ZERO FLAG IS A SINGLE BIT FLAG LOCATED IN 6 BIT OF A 8086
PROCESSOR. THE ZERO FLAG IS USED TO CHECK THE RESULT OF AN
ARITHMETIC OPERATION, INCLUDING BITWISE LOGICAL INSTRUCTIONS.
IT IS SET IF AN ARITHMETIC RESULT IS ZERO, AND RESET OTHERWISE.
THIS INCLUDES RESULTS WHICH ARE NOT STORED, AS MOST
TRADITIONAL INSTRUCTION SETS IMPLEMENT THE COMPARE
INSTRUCTION AS A SUBTRACT WHERE THE RESULT IS DISCARDED. IT IS
ALSO COMMON THAT PROCESSORS HAVE A BITWISE AND-
INSTRUCTION THAT DOES NOT STORE THE RESULT. IN MOST
PROCESSORS, THE ZERO FLAG IS MAINLY USED IN CONDITIONAL
BRANCH INSTRUCTIONS, WHICH ALTER CONTROL FLOW ON PREVIOUS
INSTRUCTION RESULTS, BUT THERE ARE OFTEN OTHER USES AS WELL.
10. SIGN FLAG
IN A 8086 PROCESSOR THE SIGN FLAG OR NEGATIVE FLAG IS A SINGLE
BIT IN A SYSTEM STATUS (FLAG) REGISTER USED TO INDICATE
WHETHER THE RESULT OF THE LAST MATHEMATICAL OPERATION
RESULTED IN A VALUE WHOSE MOST SIGNIFICANT BIT WAS SET. IN A
TWO'S COMPLEMENT INTERPRETATION OF THE RESULT, THE NEGATIVE
FLAG IS SET IF THE RESULT WAS NEGATIVE. FOR EXAMPLE, IN AN 8-BIT
SIGNED NUMBER SYSTEM, -37 WILL BE REPRESENTED AS 1101 1011 IN
BINARY (THE MOST SIGNIFICANT BIT IS 1), WHILE +37 WILL BE
REPRESENTED AS 0010 0101 (THE MOST SIGNIFICANT BIT IS 0).
11. OVERFLOW FLAG
IN 8086 PROCESSORS, THE OVERFLOW FLAG (SOMETIMES
CALLED V FLAG) IS USUALLY A SINGLE BIT IN A SYSTEM
STATUS REGISTER USED TO INDICATE WHEN AN ARITHMETIC
OVERFLOW HAS OCCURRED IN AN OPERATION, INDICATING
THAT THE SIGNED TWO'S-COMPLEMENT RESULT WOULD NOT
FIT IN THE NUMBER OF BITS USED FOR THE OPERATION (THE
ALU WIDTH). SOME ARCHITECTURES MAY BE CONFIGURED
TO AUTOMATICALLY GENERATE AN EXCEPTION ON AN
OPERATION RESULTING IN OVERFLOW.
12. CONTROL FLAGS
THERE ARE 3 CONTROL FLAGS IN 8086
PROCESSOR.
• TRAP FLAG
• INTERRUPT ENABLE FLAG
• DIRECTION FLAG .
13.
14. TRAP FLAG
A TRAP FLAG PERMITS OPERATION OF A PROCESSOR IN
SINGLE-STEP MODE. IF SUCH A FLAG IS AVAILABLE,
DEBUGGERS CAN USE IT TO STEP THROUGH THE EXECUTION
OF A COMPUTER PROGRAM. THE 8086 HAS NO INSTRUCTION
TO DIRECTLY SET OR RESET THE TRAP FLAG. THESE
OPERATIONS ARE DONE BY PUSHING THE FLAG REGISTER
ON THE STACK, CHANGING THE TRAP FLAG BIT TO WHAT THE
PROGRAMMER WANTS IT TO BE, AND THEN POPPING THE
FLAG REGISTER BACK OFF THE STACK.
15. INTERRUPT FLAG
THE BIT, WHICH IS BIT 9 OF THE FLAGS REGISTER, MAY BE SET OR
CLEARED BY PROGRAMS WITH SUFFICIENT PRIVILEGES, AS USUALLY
DETERMINED BY THE OPERATING SYSTEM. IF THE FLAG IS SET TO 1,
MASKABLE HARDWARE INTERRUPTS WILL BE HANDLED. IF CLEARED
(SET TO 0), SUCH INTERRUPTS WILL BE IGNORED. IF DOES NOT AFFECT
THE HANDLING OF NON- MASKABLE INTERRUPTS OR SOFTWARE
INTERRUPTS GENERATED BY THE INT INSTRUCTION.
INTERRUPT FLAG IS A SYSTEM FLAG BIT IN THE 8086 PROCESSOR’S
FLAGS REGISTER, WHICH DETERMINES WHETHER OR NOT THE CPU
WILL HANDLE MASKABLE HARDWARE INTERRUPTS.
16. DIRECTION FLAG
THE DIRECTION FLAG IS A FLAG THAT CONTROLS THE LEFT-TO- RIGHT OR RIGHT-
TO-LEFT DIRECTION OF STRING PROCESSING, STORED IN THE FLAGS REGISTER ON
ALL 8086 PROCESSORS. IT IS BIT NUMBER 10.
WHEN IT IS SET TO 0 (USING THE CLEAR-DIRECTION-FLAG INSTRUCTION CLD),IT
MEANS THAT INSTRUCTIONS THAT AUTO INCREMENT THE SOURCE INDEX AND
DESTINATION INDEX (LIKE MOVS) WILL INCREASE BOTH OF THEM. IN CASE IT IS SET
TO 1 (USING THE SET-DIRECTION-FLAG INSTRUCTION STD), THE INSTRUCTION WILL
DECREASE THEM.
THIS FLAG IS USED TO DETERMINE THE DIRECTION (FORWARD OR BACKWARD) IN
WHICH SEVERAL BYTES OF DATA WILL BE COPIED FROM ONE PLACE IN THE MEMORY.