- Related Questions & Answers
- 8085 Program to multiply two 16-bit binary numbers
- 8086 program to multiply two 16-bit numbers
- 8085 program to add two 16 bit numbers
- 8085 program to divide two 16 bit numbers
- 8085 program to multiply two 8 bit numbers
- Program to Multiply two 8 Bit numbers in 8051 Microprocessor
- Program to multiply two 8-bit numbers (shift and add method) in 8085 Microprocessor
- Program to convert a 16-bit binary number to BCD in 8085 Microprocessor
- Program to multiply two 2-digit BCD numbers in 8085 Microprocessor
- Program to Add two 8 Bit numbers in 8085 Microprocessor
- Program to Subtract two 8 Bit numbers in 8085 Microprocessor
- Program to Divide two 8 Bit numbers in 8085 Microprocessor
- 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 multiply two 8-bit numbers (shift and add method)

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

Here we will see one program for Intel 8085 Microprocessor. This program will calculate the multiplication of two 16-bit numbers.

**Problem Statement **−

Write an 8085 Assembly language program to multiply two 16-bit numbers stored at 8000H - 8001H and 8002H - 8003H.

**Discussion **−

This program takes the 16 bit data from memory location 8000H – 8001H and 8002H – 8003H. The 32 bit results are stored at location 8050H – 8053H.

Here we have tested with two 16 bit numbers. The results are as follows.

1111H × 1111H = 01234321H

1C24H × 0752H = 00CDFF88H

**first input**

Address | Data |
---|---|

… | … |

8000 | 11 |

8001 | 11 |

8002 | 11 |

8003 | 11 |

… | … |

**second input**

Address | Data |
---|---|

… | … |

8000 | 24 |

8001 | 1C |

8002 | 52 |

8003 | 07 |

… | … |

Address | HEX Codes | Labels | Mnemonics | Comments |
---|---|---|---|---|

F000 | 31, 00, 20 | LXI SP,2000H | Initialize Stack pointer | |

F003 | 2A, 00, 80 | LHLD 8000H | Load 16-bit data from 8000H - 8001H | |

F006 | EB | XCHG | Exchange the data from HL and DE | |

F007 | 2A, 02, 80 | LHLD 8002H | Load second 16-bit number | |

F00A | E5 | PUSH H | Push HL pair into stack | |

F00B | C1 | POP B | Load BC with HL pair content from stack | |

F00C | 21, 00, 00 | LXI H,0000H | Clear HL pair | |

F00F | 22, 52, 80 | SHLD 8052H | Store 0000H as LS 2-bytes of the result | |

F012 | 19 | LOOP | DAD D | Add first number to HL pair |

F013 | D2, 1F, F0 | JNC NINC | if CY = 0, jump to NINC | |

F016 | E5 | PUSH H | Push HL into Stack | |

F017 | 2A, 52, 80 | LHLD 8052 | Load HL pair from LS 2-bytes of the result | |

F01A | 23 | INX H | Increase HL pair | |

F01B | 22, 52, 80 | SHLD 8052H | Store HL pair as LS 2-bytes of the result | |

F01E | E1 | POP H | Pop stack content to HL pair | |

F01F | 0B | NINC | DCX B | Decrease BC register pair |

F020 | 78 | MOV A,B | Load B to A | |

F021 | B1 | ORA C | OR C with A | |

F022 | C2, 12, F0 | JNZ LOOP | When Z = 0, jump to LOOP | |

F025 | 22, 50, 80 | SHLD 8050H | Store HL pair to 8050H | |

F028 | 76 | HLT | Terminate the program |

** **

**first output**

Address | Data |
---|---|

… | … |

8050 | 21 |

8051 | 43 |

8052 | 23 |

8053 | 01 |

… | … |

**second output**

Address | Data |
---|---|

… | … |

8050 | 88 |

8051 | FF |

8052 | CD |

8053 | 00 |

… | … |

Advertisements