You are on page 1of 14

4.

Problem Definition
WRITE AN ALP TO SORT UNSIGNED 16 BIT BINARY
NUMBERS IN ASCENDING/DESCENDING ORDER USING
BUBBLE SORT
OBJECTIVES OF THE TERM WORK
• TO DEMONSTRATE THE CONCEPT OF BUBBLE SORT.
• TO DEVELOP THE SKILL OF WRITING AN ALP, TO SORT
THE ARRAY IN ASCENDING/DESCENDING ORDER.
 THEORETICAL BACKGROUND

 BUBBLE SORT, SOMETIMES IS A SIMPLE SORTING ALGORITHM THAT


REPEATEDLY STEPS THROUGH THE LIST TO BE SORTED, COMPARES EACH
PAIR OF ADJACENT ITEMS AND SWAPS THEM IF THEY ARE IN THE WRONG
ORDER. THE PASS THROUGH THE LIST IS REPEATED UNTIL NO SWAPS ARE
NEEDED, WHICH INDICATES THAT THE LIST IS SORTED. THE ALGORITHM,
WHICH IS A COMPARISON SORT, IS NAMED FOR THE WAY SMALLER OR
LARGER ELEMENTS "BUBBLE" TO THE TOP OF THE LIST.
INSTRUCTIONS USED IN THE PROGRAM

MOV, CMP, INC, DEC, XCHG ( JC, JNZ CONDITIONAL


JUMP INSTRUCTIONS)
ASSEMBLER DIRECTIVES
DB, EQU, ENDS

DOS INTERRUPT:
INT 21H
• EXAMPLE:
FIRST PASS: (BX=04, CX=04)
( 5 1 4 2 8 ) –> ( 1 5 4 2 8 ), HERE, ALGORITHM COMPARES THE FIRST TWO
ELEMENTS, AND SWAPS SINCE 5 > 1. BX=03
( 1 5 4 2 8 ) –>  ( 1 4 5 2 8 ), SWAP SINCE 5 > 4 BX=02
( 1 4 5 2 8 ) –>  ( 1 4 2 5 8 ), SWAP SINCE 5 > 2 BX=01
( 1 4 2 5 8 ) –> ( 1 4 2 5 8 ), NOW, SINCE THESE ELEMENTS ARE ALREADY IN ORDER (8
> 5), BX=00
• WHEN BX=00, CX IS DECREMENTED BY 1 AND IT IS EQUAL TO 03
• NOW BX=03, CX=03
• SECOND PASS:
( 1 4 2 5 8 ) –> ( 1 4 2 5 8 ) BX=02
( 1 4 2 5 8 ) –> ( 1 2 4 5 8 ), SWAP SINCE 4 > 2 BX=01
( 1 2 4 5 8 ) –> ( 1 2 4 5 8 ) BX=00
• BX=CX=02
NOW, THE ARRAY IS ALREADY SORTED, BUT OUR ALGORITHM DOES NOT KNOW
IF IT IS COMPLETED. THE ALGORITHM NEEDS ONE WHOLE PASS WITHOUT ANY
SWAP TO KNOW IT IS SORTED.
EXAMPLE CONTINUED

• THIRD PASS:
( 1 2 4 5 8 ) –> ( 1 2 4 5 8 ) BX=01
( 1 2 4 5 8 ) –> ( 1 2 4 5 8 ) BX=00
BX=01, CX=01
• FORTH PASS:
( 1 2 4 5 8 ) –> ( 1 2 4 5 8 ) BX=00, CX=00
• ALGORITHM
• STEP1:INITIALIZE THE DATA SEGMENT.
• STEP2:DEFINE AN ARRAY & A REGISTER NAMED COUNT.
• STEP3:END THE DATA SEGMENT.
• STEP4:INITIALIZE THE CODE SEGMENT.
• STEP5:MOVE THE COUNTER -1 VALUE TO THE REGISTERS BX AND
CX
• STEP6:SET THE COUNTER VALUE IN TO THE COUNTER REGISTER
FOR LOOPING PURPOSE.
• STEP7:STORE THE OFFSET ADDRESS OF ARRAY INTO SOURCE
INDEX
• STEP8:MOVE CONTENT OF SOURCE INDEX TO ACCUMULATOR
RESISTER
• STEP9:COMPARE THE ACCUMULATOR AND CONTENT OF SOURCE
INDEX+2 LOCATION
• STEP10:GO TO STEP 11 IF ACCUMULATOR CONTENT IS LESS THAN
SOURCE INDEX CONTENT ELSE
• EXCHANGE THE CONTENT OF SOURCE INDEX & ACCUMULATOR
• STEP11:INCREMENT SOURCE INDEX REGISTER TWICE
• STEP12:LOOP TO STEP7 IF COUNTER REGISTER (CX)IS NOT
ZERO
• STEP13:DECREMENT THE COUNTER (BX)IF COUNTER IS
NOT ZERO GO TO STEP 6
• STEP14:DISPLAY THE CONTENT OF ARRAY IN BOTH
ASCENDING / DESCENDING ORDER
• STEP15:TERMINATE THE PROGRAM NORMALLY USING DOS
INTERRUPT.
• STEP16:END THE CODE SEGMENT
 SOURCE CODE
DATA SEGMENT
LIST DW 23H,54H,02H,11H,51H
COUNT EQU 04
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START : MOV AX,DATA
MOV DS,AX
MOV CX,COUNT
NEXT1: MOV BX, CX
MOV SI, OFFSET LIST
NEXT : MOV AX, [SI]
INC SI
INC SI
CMP AX, [SI]
JC DOWN
XCHG AX, [SI]
MOV [SI-2], AX
DOWN: DEC BX
JNZ NEXT
LOOP NEXT1
MOV AH,4CH
INT 21H
CODE ENDS
END START
SAMPLE INPUT :
23H,54H,02H,11H,51H

SAMPLE OUTPUT :
02H,11H,23H,51H,54H (ASCENDING ORDER)
OUTCOME:
AT THE END OF THE LAB COURSE STUDENT IS ABLE TO:
• WRITE THE PROGRAM IN ASSEMBLY LANGUAGE TO SORT
THE ARRAY USING BUBBLE SORT TECHNIQUE

You might also like