SEARCH A NUMBER FROM AN ARRAY


INCLUDE IO.H
CR EQU 0DH
LF EQU 0AH
ARRAY EQU 100H


DATA SEGMENT
        MM1 DB CR,LF,'          SEARCHING A NUMBER IN A ARRAY','$'
        MM2 DB CR,LF,'          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~','$'
        MS1 DB CR,LF,CR,LF,' HOW MANY NUMBERS TO INPUT:','$'
        MS2 DB CR,LF,' ENTER THE  NUMBER        :','$'
        MS3 DB CR,LF,' ENTER THE SEARCH NUMBER  :','$'
        MS4 DB CR,LF,' THE GIVEN NUMBER APPEARS ','$'
        MS5 DB 'TIMES IN AN ARRAY   ','$'
        MS6 DB CR,LF,' ','$'


        VALUE DB 10 DUP(?)
        NUMBER DB 10 DUP(?)
        STARRAY DW ARRAY DUP(?)
        SEARCH DW ARRAY DUP(?)
        TEMP DW 10 DUP(?)
        COUNT DW 3 DUP(?),CR,LF,'$'
DATA ENDS


CODE SEGMENT
        ASSUME DS:DATA,CS:CODE


START:
        MOV AX,00
        MOV AX, DATA
        MOV DS,AX


MAIN:
        OUTPUT MM1
        OUTPUT MM2
        OUTPUT MS1
        INPUTS VALUE,10
        ATOI VALUE                    
        MOV CX,AX
        MOV TEMP,AX
        LEA BX,STARRAY
TASK:
        PUSH CX                       
        OUTPUT MS2                    


        INPUTS NUMBER,10
        ATOI NUMBER
        MOV [BX],AX                           ADD BX,02
        POP CX                        ;GET THE CX FROM THE STACK
        LOOP TASK
        LEA BX,STARRAY             


        OUTPUT MS3
        INPUTS SEARCH ,10
        ATOI SEARCH                   ;AX <- THE SEARCH NUMBER
        MOV CX,00


TOP:
        CMP [BX],AX                   ; COMPARE THE BX WITH AX
        JE JOB          


RARE:
        ADD BX,02  
        DEC TEMP                      ;DECREMENT TEMP
        CMP TEMP,00
        JE PROG
        JMP TOP
        CMP CX,00
        
JOB:
        INC CX
        JMP RARE
PROG:
        OUTPUT MS4
        ITOA COUNT,CX
        OUTPUT COUNT
        OUTPUT MS5
        OUTPUT MS6               
QUIT:
        MOV AL,00
        MOV AH,4CH
        INT 21H
CODE ENDS
        END START