Skip to main content

Logical Group Instructions (Part-IV) - CMP and CPI

CMP R:
  • This instruction compares the contents of the specified register with the contents of the accumulator.
  • This comparison is performed by subtracting the contents of the specified register from the contents of the accumulator.
  • Register R can be any 8-bit general purpose register like A, B, C, D, E, H and L.
  • If A=R, then CY=0 and Z=1.
  • If A>R, then CY=0 and Z=0.
  • If A<R, then CY=1 and Z=0.
  • S, AC and P are modified to reflect the status of subtraction.
  • Z and CY are used to indicate the result of comparison.
  • It is a one byte instruction.
  • Register addressing mode is used.
Example:
If A = 12H and B = 14H 
CMP B ; This instruction will compare the contents of A and B and since A<B, carry flag will set.

CMP M:
  • This instruction compares the contents of the memory location pointed by HL register pair with the contents of the accumulator.
  • This comparison is performed by subtracting the contents of the memory location from the contents of the accumulator.
  • If A=M, then CY=0 and Z=1.
  • If A>M, then CY=0 and Z=0.
  • If A<M, then CY=1 and Z=0.
  • S, AC and P are modified to reflect the status of subtraction.
  • Z and CY are used to indicate the result of comparison.
  • It is a one byte instruction.
  • Register indirect addressing mode is used.
Example:
If HL = 4320H, (4320H) = 33H and A = 33H
CMP M ; This instruction will compare the contents of A with the contents of location 4320H and since A = M, carry flag will reset and zero flag will set.

CPI 8-bit data:
  • This instruction compares the 8-bit data given in the instruction itself with the contents of the accumulator.
  • This comparison is performed by subtracting the 8-bit data from the contents of the accumulator.
  • If A=data, then CY=0 and Z=1.
  • If A>data, then CY=0 and Z=0.
  • If A<data, then CY=1 and Z=0.
  • S, AC and P are modified to reflect the status of subtraction.
  • Z and CY are used to indicate the result of comparison.
  • It is a two byte instruction.
  • Immediate addressing mode is used.
Example:
If A = 50H
CPI 30H ; This instruction will compare the contents of A with 30H and since A>30H, carry flag and zero flag both will reset.

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