# 8085 program to find 1's and 2's complement of 16-bit number

In this program we will see how to find 1's complement and 2's complement of a 16-bit number.

### Problem Statement

Write 8085 Assembly language program to find 1's complement and 2's complement of a16-bit number stored in 8000H and 8001H.

### Discussion

8085 has an instruction CMA. This instruction complements the content of Accumulator. For 1's complement CMA instruction is sufficient, and for 2's complement we have to increase the number by 1 after complementing.

For 16-bit number, we are taking the number into HL pair, but for complementing we have to copy the numbers to Accumulator from H and L one by one. Then by INX instruction we will increase HL pair to get 2's complement

We are taking the number from 8000H and 8001H, and storing the 1's complement at location 8050H and 8051H, and 2's complement to 8052H and 8053H.

Data
.
.
.
.
.
.
8000
CD
8001
AB
.
.
.
.
.
.

### Program

HEX Codes
Mnemonics
F000
2A, 00, 80
LHLD 8000H
Load the number from memory to HL
F003
7C
MOV A, H
Load the H content to A
F004
2F
CMA
Complement the accumulator
F005
67
MOV H, A
Replace H with A
F006
7D
MOV A, L
Load the L content to A
F007
2F
CMA
Complement the accumulator
F008
6F
MOV L, A
Replace L with A
F009
22, 50, 80
SHLD 8050H
Store the 1's complemented result
F00C
23
INX H
Increase HL by 1
F00D
22, 52, 80
SHLD 8052H
Store the 2's complemented result
F010
76
HLT
Terminate the program

Data
.
.
.
.
.
.
8050
32
8051
54
8052
33
8053
54
.
.
.
.
.
.