BUBBLE SORT


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

STACK SEGMENT STACK
      DW  20H DUP(?)
STACK ENDS

DATA SEGMENT
PROM  DB 'ENTER THE NUMBER OF VALUES:','$'
PROM1 DB 'ENTER THE VALUES ONE BY ONE,TO EXIT GIVE NEGATIVE VALUE :','$'
PROM2 DB 'SORTED VALUES ARE:','$'
NELE  DW ?
NUM   DW ?
NARR DW MAX DUP(?)
NARR1 DB 16 DUP(?),'$'
DATA ENDS

CODE SEGMENT
   ASSUME CS:CODE,DS:DATA
START: MOV    AX,SEG DATA
       MOV    DS,AX
       OUTPUT PROM
       INPUTS NELE,16
       LEA    SI,NARR
       OUTPUT PROM1
       ATOI   NELE
       MOV    CX,AX 
WHILE1:PUSH  CX
       INPUTS NUM,16
       ATOI   NUM
       MOV    [SI],AX
       INC    SI
       INC    SI
       POP    CX
       DEC    CX
       JNZ    WHILE1
       ATOI   NELE 
       MOV    DX,AX
       DEC    DX
DOPASS:MOV    CX,DX
       LEA    SI,NARR 
CHECK: MOV    AX,[SI]
       CMP    [SI+2],AX
       JNC    NOSWAP
       XCHG   AX,[SI+2]
       MOV    [SI],AX
NOSWAP:INC    SI
       INC    SI 
       LOOP   CHECK
       DEC    DX
       JNZ    DOPASS
       LEA    SI,NARR
       ATOI   NELE
       MOV    CX,AX
       OUTPUT PROM2
OUT1:  ITOA   NARR1,[SI]
       OUTPUT NARR1
       INC    SI
       INC    SI
       LOOP   OUT1
       MOV    AL,00
       MOV    AH,4CH
       INT    21H
CODE ENDS
END START