# 8085 program for Linear search | Set 2

Problem – Write an assembly language program in 8085 microprocessor to find a given number in the list of 10 numbers, if found store 1 in output else store 0 in output.

Example –

Assumption – Data to be found at 2040H, list of numbers from 2050H to 2059H and output at 2060H.

Algorithm –

1. Load data byte to be searched in B register and counter in D register.
2. Load starting element in Accumulator.
3. Compare Accumulator and B register.
4. If zero flag is set then JUMP to point 8 (as CMP instruction sets Zero flag when both are equal).
5. Decrement D register
6. If D>0 take next element in Accumulator and go to point 3.
7. If D=0, this means element not found then store 00H. End the program.
8. Store 01H as element found. End the program.

Program –

2000H Data LXI H, 2040H Load address of data to be searched
2003H MOV B, M Store data to be searched in B register
2007H MVI D, 0AH Counter for 10 elements
2009H NEXT MOV A, M Retrieve list element in Accumulator
200AH CMP B Compare element with data byte
200BH JZ STOP Jump if data byte found
200EH INX H Next element of list
200FH DCR D Decrement counter
2016H MVI M, 00H Store 00H
2018H HLT Halt
201CH MVI M, 01H Store 01H
201EH HLT Halt

Explanation –

1. One by one all elements are compared with data byte in B register
2. If element found, loop ends and 01H is stored
3. Loop executes 10 number of times
4. If at the end of 10 iterations, data byte is not found then 00H is stored

Refer for Set-1: 8085 program to search a number in an array of n numbers