SUI 8-bit data:
- This instruction subtracts the 8-bit data given in the instruction from the contents of the accumulator.
- The result is stored in accumulator.
- All flags are modified.
- It is a two byte instruction.
- Immediate addressing mode is used.
Example:
If A = 50H
If A = 50H
SUI 10H ; This instruction subtracts 10H from the contents of A (50H) and the result (40H) is stored in A.
SBI 8-bit data:
- This instruction subtracts the 8-bit data given in the instruction and the borrow flag from the contents of the accumulator.
- The result is stored in accumulator.
- All flags are modified.
- It is a two byte instruction.
- Immediate addressing mode is used.
Example:
If CY = 1 and A = 50H
If CY = 1 and A = 50H
SBI 20H ; This instruction subtracts 20H and carry (1) from the contents of A (50H) and the result (2FH) is stored in A.
DAA:
- It stands for Decimal Adjust Accumulator.
- This instruction adjusts accumulator to packed BCD after adding two BCD numbers.
- If the value of low order four bits D3-D0 in accumulator is greater than 9 or if AC (Auxiliary Carry) flag is set, then instruction adds 6 to the low order four bits.
- If the value of high order four bits D7-D4 in accumulator is greater than 9 or if CY (Carry) flag is set, then instruction adds 6 to the high order four bits.
- This is the only instruction that uses AC (Auxiliary Carry) flag.
- All flags are modified.
- It is a one byte instruction.
- Implied addressing mode is used.
Example:
If A = 0101 1001 = 59 BCD
and B = 0001 0011 = 13 BCD then
ADD B ; This adds A and B and gives A = 0110 1100 = 6CH
and B = 0001 0011 = 13 BCD then
ADD B ; This adds A and B and gives A = 0110 1100 = 6CH
DAA ; This instruction adds 0000 0110 = 06H to 6CH because 1100 > 9
; So A = 0111 0010 = 72 BCD
If A = 1001 0101 = 95 BCD
and B = 0001 0011 = 13 BCD
ADD B ; This adds A and B and gives A = 1010 1000 = A8H
DAA ; This adds 0110 0000 = 60H to A8H because 1010 > 9
; So A = 0000 1000 = 08 BCD and CY = 1
; So A = 0111 0010 = 72 BCD
If A = 1001 0101 = 95 BCD
and B = 0001 0011 = 13 BCD
ADD B ; This adds A and B and gives A = 1010 1000 = A8H
DAA ; This adds 0110 0000 = 60H to A8H because 1010 > 9
; So A = 0000 1000 = 08 BCD and CY = 1
Comments
Post a Comment