Open In App

8085 program for bubble sort

Last Updated : 25 Apr, 2023
Like Article

Prerequisite – Bubble Sort 
Problem – Write an assembly language program in 8085 microprocessor to sort a given list of n numbers using Bubble Sort. 

Example – 


Assumption – Size of list is stored at 2040H and list of numbers from 2041H onwards. 

Algorithm – 

  1. Load size of list in C register and set D register to be 0
  2. Decrement C as for n elements n-1 comparisons occur
  3. Load the starting element of the list in Accumulator
  4. Compare Accumulator and next element
  5. If accumulator is less than or equal to the next element jump to step 8
  6. Swap the two elements
  7. Set D register to 1
  8. Decrement C
  9. If C>0 take next element in Accumulator and go to point 4
  10. If D=0, this means in the iteration, no exchange takes place consequently we know that it won’t take place in further iterations so the loop in exited and program is stopped
  11. Jump to step 1 for further iterations

Program – 

Address Label Instruction Comment
2000H START LXI H, 2040H Load size of array
2003H   MVI D, 00H Clear D register to set up a flag
2005H   MOV C, M Set C register with number of elements in list
2006H   DCR C Decrement C
2007H   INX H Increment memory to access list
2008H CHECK MOV A, M Retrieve list element in Accumulator
2009H   INX H Increment memory to access next element
200AH   CMP M Compare Accumulator with next element
200BH   JC NEXTBYTE If accumulator is less then jump to NEXTBYTE
200EH   JZ NEXTBYTE If accumulator is equal then jump to NEXTBYTE
2011H   MOV B, M Swap the two elements
2012H   MOV M, A  
2013H   DCX H  
2014H   MOV M, B  
2015H   INX H  
2016H   MVI D, 01H If exchange occurs save 01 in D register
2018H NEXTBYTE DCR C Decrement C for next iteration
2019H   JNZ CHECK Jump to CHECK if C>0
201CH   MOV A, D Transfer contents of D to Accumulator
201DH   CPI 01H Compare accumulator contents with 01H
201FH   JZ START Jump to START if D=01H
2022H   HLT HALT


  • Retrieve an element in accumulator.
  • Compare it with next element, if it is greater then swap otherwise move to next index.
  • If in one entire loop there has been no exchange, halt otherwise start the whole iteration again.
  • The following approach has two loops, one nested inside other so- 

    Worst and Average Case Time Complexity: O(n*n). Worst case occurs when array is reverse sorted. 
    Best Case Time Complexity: O(n). Best case occurs when array is already sorted.  

Bubble sort is a simple sorting algorithm that repeatedly steps through the list to be sorted, compares each adjacent pair of elements, and swaps them if they are in the wrong order. The algorithm gets its name from the way smaller elements “bubble” to the top of the list. Here’s an 8085 assembly language program for bubble sort

Advantages of bubble sort:

  1. Bubble sort is easy to understand and implement, even in assembly language.
  2. Bubble sort is efficient for small lists and nearly sorted lists.
  3. Bubble sort has a simple logic that is easy to debug and modify.

Disadvantages of bubble sort:

  1. bubble sort has a worst-case and average-case time complexity of O(n^2), which makes it inefficient for large lists.
  2. Bubble sort takes more time to execute compared to other sorting algorithms like Quick sort and Merge sort.
  3. Bubble sort does not work efficiently for lists with random or unsorted elements.

Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads