FLAG REGISTER OF 8086
PRESENTED BY:
M.ASRITHA(16711A0540)
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.
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.
STATUS FLAGS THERE ARE 6 STATUS FLAGS IN
8086 PROCESSOR.
• CARRY FLAG
• PARITY FLAG
• AUXILIARY FLAG
• ZERO FLAG
• SIGN FLAG
• OVERFLOW FLAG
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.
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.
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.
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.
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).
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.
CONTROL FLAGS
THERE ARE 3 CONTROL FLAGS IN 8086
PROCESSOR.
• TRAP FLAG
• INTERRUPT ENABLE FLAG
• DIRECTION FLAG .
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.
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.
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.
THANK YOU

flag register of 8086

  • 1.
    FLAG REGISTER OF8086 PRESENTED BY: M.ASRITHA(16711A0540)
  • 2.
    WHAT IS FLAGSREGISTER?? 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 FLAGSREGISTERS 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 THEREARE 6 STATUS FLAGS IN 8086 PROCESSOR. • CARRY FLAG • PARITY FLAG • AUXILIARY FLAG • ZERO FLAG • SIGN FLAG • OVERFLOW FLAG
  • 6.
    CARRY FLAG IN 8086PROCESSORS 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 8086PROCESSORS 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 AUXILIARYFLAG 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 ZEROFLAG 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 A8086 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 8086PROCESSORS, 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 ARE3 CONTROL FLAGS IN 8086 PROCESSOR. • TRAP FLAG • INTERRUPT ENABLE FLAG • DIRECTION FLAG .
  • 14.
    TRAP FLAG A TRAPFLAG 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  THEBIT, 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 DIRECTIONFLAG 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.
  • 17.