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 –**

- Load size of list in C register and set D register to be 0
- Decrement C as for n elements n-1 comparisons occur
- Load the starting element of the list in Accumulator
- Compare Accumulator and next element
- If accumulator is less than or equal to the next element jump to step 8
- Swap the two elements
- Set D register to 1
- Decrement C
- If C>0 take next element in Accumulator and go to point 4
- 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
- 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 |

**Explanation-**

- Retrive 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.

Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.

## Recommended Posts:

- 8085 program for Linear search | Set 2
- 8085 program to convert a BCD number to binary
- 8085 program to find the element that appears once
- 8085 program to find maximum and minimum of 10 numbers
- 8085 program to search a number in an array of n numbers
- 8085 program to find maximum of two 8 bit numbers
- 8085 program to add two 8 bit numbers
- 8085 program to multiply two 8 bit numbers
- 8085 program to convert an 8 bit number into Grey number
- 8085 program to find the factorial of a number
- 8085 program to count the number of ones in contents of register B
- 8085 program to add two 16 bit numbers
- 8085 program to exchange a block of bytes in memory
- 8085 program to find square root of a number
- 8085 program to find 1's and 2's complement of 8-bit number
- 8085 program to convert 8 bit BCD number into ASCII Code
- 8085 program to find 1’s and 2’s complement of 16-bit number
- 8085 program to swap two 8-bit numbers
- 8085 program to add three 16 bit numbers stored in registers
- 8085 program to access and exchange the content of Flag register with register B

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.