My question is "what is the need of using auxiliary carry?" I mean 'AC' flag is set when D3 generates a carry. Then why not different flags for D2 or D4?

Why suddenly we are treating D3 carry in a special way?


2 Answers 2


It is used for BCD arithmetic. Each decimal requires 4 bits.

  • $\begingroup$ Thank you so much. Obvious logic and I missed the point. Thanks for the answer. $\endgroup$
    – Demietra95
    May 31, 2015 at 13:56

Auxillary carry flag is used in microprocessors to carry out BCD arithmetic operations.

As hexadecimal is used to carry out operations in microprocessor, we need to find a way to convert the answers in decimal( if we want decimal arithmetic). In 8085 microprocessor this process is carried out by commands like DAA and DAS. These need Auxillary Carry flag's status for functioning.

For example:

If we want to perform BCD addition on 38 and 29 we can use DAA command after ADD instruction.This will check whether an auxillary carry has been generated(or lower nibble is greater than 9) or not. In this case it has as 9+8=11 in hexadecimal, so reading this it will add 06 to the answer microprocessor has got i.e. 61. Adding 06 to 61 we get 67 which is the correct BCD addition of 38 and 29.

DAA work with Accumulator only. Two conditions of DAA are:

  1. Add 06 with A, if Lower Nibble > 9 or Auxillary Carry = 1
  2. Add 60 with A, if Upper nibble > 9 or Carry = 1

Similarly, DAS command is used in the same way for BCD subtraction in 8086 microprocessor but it is not available in 8085.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.