Professional Documents
Culture Documents
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
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