Program to find the largest number in an array

Q. Write an 8085 program and draw a flow chart to find the largest number in an array.(8085 Microprocessor Program)

Flowchart/Algorithm

Program

Address Mnemonics Operand Opcode Comments
2000 LXI H, 3000H 21 Load H-L pair with address 3000H.
2001 00
2002 30
2003 MOV C, M 4E Move the counter from memory to reg. C.
2004 INX H 23 Increment H-L pair.
2005 MOV A, M 7E Move the 1st number from memory to reg. A.
2006 DCR C 0D Decrement counter.
2007 INX H 23 Increment H-L pair.
2008 MOV B, M 46 Move the next number from memory to reg. B.
2009 CMP B B8 Compare B with A.
200A JNC 200EH D2 Jump to address 200EH if there is no carry.
200B 0E
200C 20
200D MOV A, B 78 Move largest from reg. B to reg. A.
200E DCR C 0D Decrement counter.
200F JNZ 2007H C2 Jump to address 2007H if the counter is not zero.
2010 07
2011 20
2012 INX H 23 Increment H-L pair.
2013 MOV M, A 77 Move the result from reg. A to memory.
2014 HLT 76 Halt

Output

Before Execution:

3000H: 05H (Counter)
3001H: 15H
3002H: 01H
3003H: 65H
3004H: E2H
3005H: 83H

After Execution:

3006H: E2H

Program Explanation

  1. This program finds the largest number in an array.
  2. Initially, the counter is initialized with the size of an array.
  3. Then, two numbers are moved to registers A and B and compared.
  4. After comparison, the largest of two must be in the accumulator. If it is already in the accumulator, then its fine, otherwise it is moved to the accumulator.
  5. Counter is decremented and checked whether it has reached zero. If it has, the loop terminates otherwise, the next number is moved to register and compared.
  6. Let us assume that the memory location 3000H stores the counter. The next memory locations store the array.
  7. Initially, H-L pair is loaded with the address of the counter and is moved to register C.
  8. Then, H-L pair is incremented to point to the first number in the array.
  9. The first number is moved from memory to accumulator and counter is decremented by one.
  10. H-L pair is again incremented and the second number is moved to register B.
  11. The two numbers are compared.
  12. After comparison, if A > B, then CF = 0, and if A < B, then CF = 1.
  13. Carry flag is checked for carry. If there is a carry, it means B is greater than A and it is moved to the accumulator.
  14. The counter is decremented and checked whether it has become zero.
  15. If it hasn’t become zero, it means there are numbers left in the array. In this case, the control jumps back to increment the H-L pair and moves the next number to register B.
  16. This process continues until counter becomes zero, i.e. all the numbers in the array are compared.
  17. At last, H-L pair is incremented and the largest number is moved from accumulator to memory.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.