8085 program to add two 8 bit numbers
Problem – Write an assembly language program to add two 8 bit numbers stored at address 2050 and address 2051 in 8085 microprocessor. The starting address of the program is taken as 2000.
Example –
Algorithm –
- Load the first number from memory location 2050 to accumulator.
- Move the content of accumulator to register H.
- Load the second number from memory location 2051 to accumulator.
- Then add the content of register H and accumulator using “ADD” instruction and storing result at 3050
- The carry generated is recovered using “ADC” command and is stored at memory location 3051
Program –
Memory Address | Mnemonics | Comment |
---|---|---|
2000 | LDA 2050 | A<-[2050] |
2003 | MOV H, A | H<-A |
2004 | LDA 2051 | A<-[2051] |
2007 | ADD H | A<-A+H |
2008 | MOV L, A | L←A |
2009 | MVI A 00 | A←00 |
200B | ADC A | A←A+A+carry |
200C | MOV H, A | H←A |
200D | SHLD 3050 | H→3051, L→3050 |
2010 | HLT |
Explanation –
- LDA 2050 moves the contents of 2050 memory location to the accumulator.
- MOV H, A copies contents of Accumulator to register H to A
- LDA 2051 moves the contents of 2051 memory location to the accumulator.
- ADD H adds contents of A (Accumulator) and H register (F9). The result is stored in A itself. For all arithmetic instructions A is by default an operand and A stores the result as well
- MOV L, A copies contents of A (34) to L
- MVI A 00 moves immediate data (i.e., 00) to A
- ADC A adds contents of A(00), contents of register specified (i.e A) and carry (1). As ADC is also an arithmetic operation, A is by default an operand and A stores the result as well
- MOV H, A copies contents of A (01) to H
- SHLD 3050 moves the contents of L register (34) in 3050 memory location and contents of H register (01) in 3051 memory location
- HLT stops executing the program and halts any further execution
Please Login to comment...