- Related Questions & Answers
- Program to find the HCF of two given bytes in 8085 Microprocessor
- 8085 program to add two consecutive bytes of an array
- 8085 program to subtract two consecutive bytes of an array
- Java program to find the GCD or HCF of two numbers
- 8085 Program to Exchange 10 bytes
- Program to find GCD or HCF of two numbers in C++
- 8085 program to exchange a block of bytes in memory
- Program to find HCF iteratively in C++
- 8085 program to find larger of two 8 bit numbers
- 8085 program to find maximum of two 8 bit numbers
- Program to find GCD or HCF of two numbers using Middle School Procedure in C++
- Find the other number when LCM and HCF given in C++
- 8085 program to find smallest number between two numbers
- 8085 program to find the sum of a series
- 8085 program to find the factorial of a number

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

In this program we will see how to find the HCF or GCD of two numbers using 8085.

Write 8085 Assembly language program to find the HCF of two numbers stored at memory location 8000H and 8001H.

This problem is solved by the Euclidean algorithm to find HCF. This algorithm is very simple.The algorithm steps are as follows −

If first number and second number are same, then

- go to step 3.

Else if first number < second number, then

- exchange no1 andno2.

first-number <-first-number – second-number; go to step 1

Display result as first-number

The values are stored at location 8000H and 8001H, and the result will be stored at location8050H.

**First Input**

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

... | ... |

8000 | 2D |

8001 | 69 |

... | ... |

8050 | 0F |

... | ... |

**Second Input**

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

... | ... |

8000 | 25 |

8001 | 35 |

... | ... |

8050 | 01 |

... | ... |

Address | HEXCodes | Labels | Mnemonics | Comments |
---|---|---|---|---|

F000 | 21, 00, 80 | LXI H,8000H | Point to the first number | |

F003 | 7E | MOV A, M | Load the first number into Acc | |

F004 | 23 | INX H | Point to next location | |

F005 | 46 | MOV B, M | Load the second number | |

F006 | B8 | LOOP | CMP B | Compare B with A |

F007 | CA, 17, F0 | JZ STORE | When A and Bare same, store the result | |

F00A | DA, 11, F0 | JC EXG | If B > A, then exchange B and A | |

F00D | 90 | SUB B | if B < A,subtract B from A | |

F00E | C3, 06, F0 | JMP LOOP | Jump to LOOP | |

F011 | 48 | EXG | MOV C,B | Load C with B |

F012 | 47 | MOV B, A | Move A to B | |

F013 | 79 | MOV A, C | Move C to A | |

F014 | C3, 06, F0 | JMP LOOP | Jump to LOOP | |

F017 | 32, 50, 80 | STORE | STA 8050H | Store the value into memory |

F01A | 76 | HLT | Terminate the program |

**First Output**

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

... | ... |

8050 | 0F |

... | ... |

**Second Output**

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

... | ... |

8050 | 01 |

... | ... |

Advertisements