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 16 bit numbers
- 8085 program to add two 8 bit numbers
- 8085 program to add 2-BCD numbers
- 8085 program to sum of two 8 bit numbers without carry
- 8085 program to multiply two 16-bit numbers
- 8085 program to add numbers in an array
- 8085 program to multiply two 8 bit numbers
- 8085 program to swap two 8-bit numbers
- 8085 program to find larger of two 8 bit numbers
- 8085 program to find the sum of first n natural numbers
- 8085 program to subtract two 8-bit numbers with or without borrow
- 8085 program to add three 16 bit numbers stored in registers
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.