8085 programs to find 2’s complement with carry | Set 2
Last Updated :
07 May, 2023
Problem-1: Find 2’s complement of an 8 bit number stored at address 2050. Result is stored at address 3050 and 3051. Starting address of program is taken as 2000.
Example –
Algorithm –
- We are taking complement of the number using CMA instruction.
- Then adding 01 to the result.
- The carry generated while adding 01 is stored at 3051.
Program –
Memory Address |
Mnemonics |
Comment |
2000 |
LDA 2050 |
A←2050 |
2003 |
CMA |
A←complement of A |
2004 |
INR A |
A←A+01 |
2005 |
MOV L, A |
L←A |
2006 |
MVI A 00 |
A←00 |
2008 |
ADC A |
A←A+A+Carry |
2009 |
MOV H, A |
H←A |
200A |
SHLD 3050 |
L→3050, H→3051 |
200D |
HLT |
|
Explanation – Registers used: A, H, L
- LDA 2050 loads content of 2050 in A
- CMA complements the contents of A
- INR A increases A by 01
- MOV L, A copies contents of A in L
- MVI A 00 moves 00 in A
- ADC A adds A, A, Carry and assigns it to A
- MOV H, A copies contents of A in H
- SHLD 3050 stores value of H at memory location 3051 and L at 3050
- HLT stops executing the program and halts any further execution
Problem-2: Find 2’s complement of a 16 bit number stored at address 2050 and 2051. Result is stored at address 3050, 3051 and 3052. Starting address of program is taken as 2000.
Example –
Algorithm –
- We are taking complement of the numbers using CMA instruction.
- Then adding 0001 to the result using INX instruction.
- The carry generated while adding 0001 is stored at 3052.
Program –
Memory Address |
Mnemonics |
Comment |
2000 |
LHLD 2050 |
L←2050, H←2051 |
2003 |
MOV A, L |
A←L |
2004 |
CMA |
A←complement of A |
2005 |
MOV L, A |
L←A |
2006 |
MOV A, H |
A←H |
2007 |
CMA |
A←Complement of A |
2008 |
MOV H, A |
H←A |
2009 |
INX H |
HL←HL+0001 |
200A |
MVI A 00 |
A←00 |
200C |
ADC A |
A←A+A+Carry |
200D |
SHLD 3050 |
L→3050, H→3051 |
2010 |
STA 3052 |
A→3052 |
2013 |
HLT |
|
Explanation – Registers used: A, H, L
- LHLD 2050 loads content of 2051 in H and content of 2050 in L
- MOV A, L copies contents of L in A
- CMA complements contents of A
- MOV L, A copies contents of A in L
- MOV A, H copies contents of H in A
- CMA complements contents of A
- MOV H, A copies contents of A in H
- INX H adds 0001 in HL
- MVI A 00 moves 00 in A
- ADC A adds A, A, Carry and stores result in A
- SHLD 3050 stores value of H at memory location 3051 and L at 3050
- STA 3052 stores value of A at memory location 3052
- HLT stops executing the program and halts any further execution
Advantages :
- It is a simple and efficient method to find the 2’s complement of a binary number using the carry.
- It is faster than the traditional method of finding the 2’s complement by inverting all bits and adding 1.
- It requires fewer instructions and registers compared to other methods.
Disadvantages :
- It may be slightly more difficult to understand for beginners who are not familiar with the concept of binary arithmetic.
- It can only be used with binary numbers and not with other number systems such as decimal or hexadecimal.
- It may not work correctly for signed numbers if the carry flag is not properly set or cleared.
Refer for – 8085 program to find 1’s and 2’s complement of 8-bit number
8085 program to find 1’s and 2’s complement of 16-bit number
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...