Problem – Write an assembly language program in 8085 microprocessor to multiply 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) = 07H (2052H) = 02H (2053H) = 01H OUTPUT: (2054H) = 08H (2055H) = 12H (2056H) = 01H (2057H) = O0H
Hence we have multiplied two 16 bit numbers.
- Load the first data in HL pair.
- Move content of HL pair to stack pointer.
- Load the second data in HL pair and move it to DE.
- Make H register as 00H and L register as 00H.
- ADD HL pair and stack pointer.
- Check for carry if carry increment it by 1 else move to next step.
- Then move E to A and perform OR operation with accumulator and register D.
- The value of operation is zero, then store the value else goto step 3.
|2000||LHLD 2050||Load H-L pair with address 2050|
|2003||SPHL||SAVE IT IN STACK POINTER|
|2004||LHLD 2052||Load H-L pair with address 2052|
|2007||XCHG||EXCHANGE HL AND DE PAIR CONTENT|
|200F||JNC 2013||JUMP NOT CARRY|
|2012||INX B||INCREMENT BC BY 1|
|2013||DCX D||DECREMENT DE BY 1|
|2015||ORA D||OR THE CONTENT OF ACCUMULATOR AND D REGISTER||2016||JNZ 200E||JUMP NOT ZERO||2019||SHLD 2054||L<-2054,H<-2055||201C||MOV L,C||L<-C||201D||MOV H,B||B<H||201E||SHLD 2056||L<-2055,H<-2056||2021||HLT||TERMINATES THE PROGRAM|
Explanation – Registers B, C, D, E, H, L and accumulator are used for general purpose.
- LHLD 2050: load HL pair with address 2050.
- SPHL: save the content of HL in stack pointer.
- LHLD 2052: load H-L pair with address 2052.
- XCHG: exchange the content of HL pair with DE.
- LXI H, 0000H: make H as 00H and L as 00H.
- LXI B, 0000H: make B as 00h and C as 00H
- DAD SP: ADD HL pair and stack pointer.
- JNC 2013: jump to address 2013 if there will be no carry.
- INX B: increments BC register with 1.
- DCX D: decrements DE register pair by 1.
- MOV A, E: move the content of register E to accumulator.
- ORA D: or the content of accumulator and D register.
- JNZ 200E: jump to address 200E if there will be no zero.
- SHLD 2054: store the result to memory address 2054 and 2055 from HL pair register.
- MOV L, C: move the content of register C to L.
- MOV H, B: move the content of register B to H.
- SHLD 2056: store the result to memory address 2056 and 2057 from HL pair register.
- HLT: terminates the program.
GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details
- 8085 program to multiply two 8 bit numbers
- 8085 program to multiply two 8 bit numbers using logical instructions
- 8085 program to count total odd numbers in series of 10 numbers
- 8085 program to count total even numbers in series of 10 numbers
- 8086 program to multiply two 8 bit numbers
- 8086 program to multiply two 16-bit numbers
- 8085 program to add two 8 bit numbers
- 8085 program to add 2-BCD numbers
- 8085 program to add two 16 bit numbers
- 8085 program to divide two 16 bit numbers
- 8085 program to divide two 8 bit numbers
- 8085 program to swap 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 separate odd and even nos from a given list of numbers
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.
Improved By : mayank5464942