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|
|200A||MOV A, L||A<-L|
|200C||MOV L, A||L<-A|
|200D||MOV A, H||A<-H|
|200F||MOV H, A||H<-A|
|2010||JC 2017||JUMP WHEN CARRY|
|2018||SHLD 2056||HL IS STORED IN MEMORY|
|201B||MOV L, C||L<-C|
|201C||MOV H, B||H<-B|
|201D||SHLD 2054||HL IS STORED IN MEMORY|
|2020||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 2017: jump to address 2017 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.
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.
- 8085 program to divide two 8 bit 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 add two 16 bit numbers
- 8085 program to swap two 8-bit numbers
- 8085 program to subtract two 8-bit numbers with or without borrow
- 8085 program to find larger of two 8 bit numbers
- 8085 program to multiply two 8 bit numbers using logical instructions
- 8085 program to swap two 16 bit numbers using Direct addressing mode
- 8085 program to swap two 8 bit numbers using Direct addressing mode
- 8085 program to subtract two 16-bit numbers with or without borrow
- 8085 program to multiply two 16-bit numbers
- 8085 program to sum of two 8 bit numbers without carry
- 8086 program to divide a 16 bit number by an 8 bit number
- 8085 program to add three 16 bit numbers stored in registers
- 8085 program to convert an 8 bit number into Grey 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
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.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.