Problem – Write an assembly language program in 8085 microprocessor to divide two 16 bit numbers.
- Starting address of program: 2000
- Input memory location: 2050, 2051, 2052, 2053
- Output memory location: 2054, 2055, 2056, 2057.
INPUT: (2050H) = 04H (2051H) = 00H (2052H) = 02H (2053H) = 00H OUTPUT: (2054H) = 02H (2055H) = 00H (2056H) = FEH (2057H) = FFH
Hence we have divided two 16 bit numbers.
- Intialise register BC as 0000H for Quotient.
- Load the divisor in HL pair and save it in DE register pair.
- Load the dividend in HL pair.
- Subtract the content of accumulator with E register.
- Move the content A to C and H to A.
- Subtract with borrow the content of A with D.
- Move the value of accumulator to H.
- If CY=1, goto step 10, otherwise next step.
- Increment register B and jump to step 4.
- ADD both contents of DE and HL.
- Store the remainder in memory.
- Move the content of C to L & B to H.
- Store the quotient in memory.
|2000||LXI B, 0000H||INITIALISE QUOTIENT AS 0000H|
|2003||LHLD 2052H||LOAD THE DIVISOR IN HL|
|2006||XCHG||EXCHANGE HL AND DE|
|2007||LHLD 2050||LOAD THE DIVIDEND|
|200B||MOV A, L||A<-L|
|200D||MOV L, A||L<-A|
|200E||MOV A, H||A<-H|
|2010||MOV H, A||H<-A|
|2011||JC 2018||JUMP WHEN CARRY|
|2019||SHLD 2056||HL IS STORED IN MEMORY|
|201C||MOV L, C||L<-C|
|201D||MOV H, B||H<-B|
|201E||SHLD 2054||HL IS STORED IN MEMORY|
|2021||HLT||TERMINATES THE PROGRAM|
- LXI B, 0000H: intialise BC register as 0000H.
- LHLD 2052H: load the HL pair with address 2052.
- XCHG: exchange the content of HL pair with DE pair register.
- LHLD 2050: load the HL pair with address 2050.
- MOV A, L: move the content of register L into register A.
- SUB E: subtract the contents of register E with contents of accumulator.
- MOV L, A: move the content of register A into register L.
- MOV A, H: move the content of register H into register A.
- SBB D: subtract the contents of register D with contents of accumulator with carry.
- MOV H, A: move the content of register A into register H.
- JC 2018: jump to address 2018 if there is carry.
- INX B: increment BC register by one.
- JMP 200B: jump to address 200B.
- DAD D: add the contents of DE and HL pair.
- SHLD 2056: stores the content of HL pair into memory address 2056 and 2057.
- MOV L, C: move the content of register C into register L.
- MOV H, B: move the content of register B into register H.
- SHLD 2054: stores the content of HL pair into memory address 2054 and 2055.
- HLT: terminates the execution of program.
- 8085 program to divide two 8 bit numbers
- 8085 program to count total odd numbers in series of 10 numbers
- 8085 program to count total even numbers in series of 10 numbers
- 8085 program to add two 8 bit numbers
- 8085 program to add two 16 bit numbers
- 8085 program to add 2-BCD numbers
- 8085 program to multiply two 8 bit numbers
- 8085 program to add numbers in an array
- 8085 program to sum of two 8 bit numbers without carry
- 8085 program to swap two 8-bit numbers
- 8085 program to multiply two 16-bit numbers
- 8085 program to find the sum of series of even numbers
- 8085 program to separate odd and even nos from a given list of numbers
- 8085 program to find larger of two 8 bit numbers
- 8085 program to subtract two 8-bit numbers with or without borrow
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. 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.