Skip to main content

Arithmetic Group Instructions (Part-IV)

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
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
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
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

Comments

Popular posts from this blog

Program to pack the two unpacked BCD numbers

Statement: Pack the two unpacked BCD numbers stored in memory locations 2000H and 2001H and store the result in memory location 2002H. The least significant digit is stored at 2000H. Example: (2000H) = 04H (2001H) = 09H Result = (2002H) = 94H Program: LDA 2001H                        ; Obtain the most significant BCD digit RLC                                    ; Rotate left  RLC                                    ; Rotate left  RLC                                    ; Rotate left  RLC                                    ; Rotate left...

Program to exchange the contents of two memory locations

Statement: Exchange the contents of memory locations 2000H and 2001H. Example:  Initially, (2000H) = 34H (2001H) = 20H After exchanging, (2000H) = 20H (2001H) = 34H Program 1 using direct addressing instructions: LDA 2000H               ; Get the contents of location 2000H into accumulator MOV B, A                  ; Move the contents of accumulator into register B LDA 2001H                ; Get the contents of location 2001H into accumulator STA 2000H                 ; Store the contents of accumulator into location 2000H MOV A, B                  ; Move the contents of register B into accumulator STA 2001H                 ; Store the contents of accumulator into location 2001H HLT  ...

Program to add the contents of two memory locations

Statement: Add the contents of memory locations 2000H and 2001H and place the result in the memory locations 2002H and 2003H. Example: (2000H) = C3H (2001H) = 29H Result = C3H + A9H = 016CH (2002H) = 6CH (2003H) = 01H Program: LXI H, 2000H                   ; HL points to location 2000H MOV A, M                        ; Move the contents of 2000H into accumulator INX H                                ; HL points to location 2001H ADD M                              ; Add the contents of 2001H with the contents of accumulator INX H                                ; HL points to location 2002H MOV M, A      ...