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.
- Load the first number from memory location 2050 to accumualtor.
- Move the content of accumulator to register H.
- Load the second number from memory location 2051 to accumaltor.
- Then add the content of register B 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
|2003||MOV H, A||H<-A|
|2006||MOV L, A||L←A|
|2007||MVI A 00||A←00|
|200A||MOV H, A||H←A|
|200B||SHLD 3050||H→3051, L→3050|
- 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