Q. Write a program and draw a flow chart to find 1’s complement of a 16-bit number.(8085 Microprocessor Program)
Flowchart/Algorithm
Program
Address | Mnemonics | Operand | Opcode | Comments |
2000 | LHLD | 3000H | 2A | Load H-L pair with data from 3000H. |
2001 | 00 | |||
2002 | 30 | |||
2003 | MOV | A, L | 7D | Move the lower-order from reg. L to reg. A. |
2004 | CMA | 2F | Complement accumulator. | |
2005 | MOV | L, A | 6F | Move the result from reg. A to reg. L. |
2006 | MOV | A, H | 7C | Move the higher-order from reg. H to reg. A. |
2007 | CMA | 2F | Complement accumulator. | |
2008 | MOV | H, A | 67 | Move the result from reg. A to reg. H. |
2009 | SHLD | 3002H | 22 | Store the result at address 3002H. |
200A | 02 | |||
200B | 30 | |||
200C | HLT | 76 | HALT |
Output
Before Execution:
3000H: 45H
3001H: 6AH
After Execution:
3002H: 7AH
3003H: 95H
Program Explanation
- This program finds the 1’s complement of a 16-bit number stored in memory 3000H-3001H.
- There is no direct way to find 1’s complement of the 16-bit number. Therefore, this can be accomplished by finding the 1’s complement of two 8-bit numbers.
- Let us assume that the operand stored at memory locations 3000H-3001H is 45H-6AH.
- The operand is loaded into H-L pair from memory locations 3000H-3001H.
- The lower-order is moved from register L to accumulator.
- Its complement is found by using CMA instruction.
- The result obtained is moved back to register L.
- Then, the higher-order is moved from register H to accumulator.
- Its complement is found by using CMA instruction.
- The result obtained is moved back to register H.
- Now, the final result is in H-L pair.
- The result is stored from H-L pair to memory locations 3002H-3003H.