Problem – Write an assembly language program in 8085 microprocessor to convert an 8 bit BCD number into hexadecimal number. Assumptions – Assume that starting address of the program is 2000, input memory locations, 2050, 2051, and output memory location is 2052. Example –
INPUT: 2050:02H 2051: 09H OUTPUT:2052: 1DH
Algorithm –
- Initialize memory pointer to 2050
- Get the most significant digit
- Multiply the MSD by 10 using repeated addition
- Add LSD to result obtained in above step
- Store the converted result in memory 2052
Program –
Memory Address | Mnemonics | Comments |
---|---|---|
2000 | LXI H, 2050 | |
2003 | MOV A, M | A<-M |
2004 | ADD A | A<-A+A |
2005 | MOV B, A | B<-A |
2006 | ADD A | A<-A+A |
2007 | ADD A | A |
2008 | ADD B | A<-A+B |
2009 | INX H | |
200A | ADD M | A<-A+M |
200B | INX H | |
200C | MOV M, A | M<-A |
200D | HLT | TERMINATE THE PROGRAM |
Explanation – Registers H, L, B, A are used for general purpose.
- LXI H, 2050: will load the HL pair register with the address 2050 of memory location.
- MOV A, M: copies the content of memory into register A.
- ADD A: add the content of accumulator with itself.
- MOV B, A: move the content of accumulator into register B.
- ADD A: add the content of accumulator with itself.
- ADD A: add the content of accumulator with itself.
- ADD B: add the content of accumulator with register B and store the result in accumulator.
- INX H: increment register pair HL.
- ADD M: add the content of accumulator with memory and store the result in accumulator.
- INX H: increment register pair HL.
- MOV M, A: copies the content of accumulator into memory.
- HLT: stops executing the program and halts any further execution.
Advantages:
- This program is efficient and easy to understand, making it accessible for programmers with varying levels of experience.
- The program handles a common conversion operation that may be useful in various applications.
- The program can be easily modified to handle different input sizes or output formats.
- The program outputs the result in ASCII format, which is easy to display or manipulate in software.
Disadvantages:
- The program assumes that the input is an 8-bit BCD number and does not handle other input formats.
- The program outputs the result in ASCII format, which may not be suitable for all use cases.
- The program assumes that the output location is fixed and does not allow for dynamic memory allocation.
- The program does not check for errors or handle exceptional cases, such as invalid input or overflow situations.