Assembly language program to find largest number in an array
Problem – Determine largest number in an array of n elements. Value of n is stored at address 2050 and array starts from address 2051. Result is stored at address 3050. Starting address of program is taken as 2000.
Example:
Algorithm:
- We are taking first element of array in A
- Comparing A with other elements of array, if A is smaller then store that element in A otherwise compare with next element
- The value of A is the answer
Program:
Memory Address | Mnemonics | Comment |
---|---|---|
2000 | LXI H 2050 | H←20, L←50 |
2003 | MOV C, M | C←M |
2004 | DCR C | C←C-01 |
2005 | INX H | HL←HL+0001 |
2006 | MOV A, M | A←M |
2007 | INX H | HL←HL+0001 |
2008 | CMP M | A-M |
2009 | JNC 200D | If Carry Flag=0, goto 200D |
200C | MOV A, M | A←M |
200D | DCR C | C←C-1 |
200E | JNZ 2007 | If Zero Flag=0, goto 2007 |
2011 | STA 3050 | A→3050 |
2014 | HLT |
Explanation:
Registers used: A, H, L, C
- LXI 2050 assigns 20 to H and 50 to L
- MOV C, M copies content of memory (specified by HL register pair) to C (this is used as a counter)
- DCR C decrements value of C by 1
- INX H increases value of HL by 1. This is done to visit next memory location
- MOV A, M copies content of memory (specified by HL register pair) to A
- INX H increases value of HL by 1. This is done to visit next memory location
- CMP M compares A and M by subtracting M from A. Carry flag and sign flag becomes set if A-M is negative
- JNC 200D jumps program counter to 200D if carry flag = 0
- MOV A, M copies content of memory (specified by HL register pair) to A
- DCR C decrements value of C by 1
- JNZ 2007 jumps program counter to 2007 if zero flag = 0
- STA 3050 stores value of A at 3050 memory location
- HLT stops executing the program and halts any further execution
Advantages of finding the largest number in an array:
- It is a simple and straightforward task that can be easily implemented in any programming language.
- It is a common operation used in many algorithms and applications, such as finding the maximum value in a data set or determining the winner of a game.
- It is a fast operation that can be completed in O(n) time complexity, where n is the number of elements in the array.
Disadvantages of finding the largest number in an array:
- If the array is unsorted, finding the largest number requires iterating through the entire array, which can be inefficient for very large arrays.
- If multiple elements in the array have the same maximum value, finding only one of them requires additional logic or iterations, which can add complexity to the algorithm.
- If the array is very large and memory is limited, storing the entire array in memory may not be feasible, which could require a more complex solution such as sorting the array in smaller parts.
Contact Us