In this program we will see how to find 1's complement and 2's complement of a 16-bit number.
Write 8085 Assembly language program to find 1's complement and 2's complement of a16-bit number stored in 8000H and 8001H.
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.
Address | Data |
---|---|
. . . | . . . |
8000 | CD |
8001 | AB |
. . . | . . . |
Address | HEX Codes | Mnemonics | Comments |
---|---|---|---|
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 |
Address | Data |
---|---|
. . . | . . . |
8050 | 32 |
8051 | 54 |
8052 | 33 |
8053 | 54 |
. . . | . . . |