8085 program to add two 16 bit numbers
Problem: Write an assembly language program to add two 16 bit numbers by using:
- 8-bit operation
- 16-bit operation
Example:
1. Addition of 16-bit numbers using 8-bit operation:
It is a lengthy method and requires more memory as compared to the 16-bit operation.
Algorithm:
- Load the lower part of the first number in the B register.
- Load the lower part of the second number in A (accumulator).
- Add both the numbers and store.
- Load the higher part of the first number in the B register.
- Load the higher part of the second number in A (accumulator).
- Add both the numbers with carrying from the lower bytes (if any) and store them at the next location.
Program:
MEMORY ADDRESS | MNEMONICS | COMMENTS |
---|---|---|
2000 | LDA 2050 | A ← 2050 |
2003 | MOV B, A | B ← A |
2004 | LDA 2052 | A ← 2052 |
2007 | ADD B | A ← A+B |
2008 | STA 3050 | A → 3050 |
200B | LDA 2051 | A ← 2051 |
200E | MOV B, A | B ← A |
200F | LDA 2053 | A ← 2053 |
2012 | ADC B | A ← A+B+CY |
2013 | STA 3051 | A → 3051 |
2016 | HLT | Stops execution |
Explanation:
- LDA 2050 stores the value at 2050 in A (accumulator).
- MOV B, A stores the value of A into the B register.
- LDA 2052 stores the value at 2052 in A.
- ADD B add the contents of B and A and store them in A.
- STA 3050 stores the result in memory location 3050.
- LDA 2051 stores the value at 2051 in A.
- MOV B, A stores the value of A into the B register.
- LDA 2053 stores the value at 2053 in A.
- ADC B adds the contents of B, A, and carry from the lower bit addition and store in A.
- STA 3051 stores the result in memory location 3051.
- HLT stops execution.
2. Addition of 16 bit numbers using 16-bit operation:
It is a very short method and less memory is also required as compared to 8-bit operations.
Algorithm:
- Load both the lower and the higher bits of the first number at once.
- Copy the first number to another registered pair.
- Load both the lower and the higher bits of second number at once.
- Add both the register pairs and store the result in a memory location.
Program:
MEMORY ADDRESS | MNEMONICS | COMMENTS |
---|---|---|
2000 | LHLD 2050 | H-L ← 2050 |
2003 | XCHG | D ![]() ![]() |
2004 | LHLD 2052 | H-L ← 2052 |
2007 | DAD D | H ← H+D & L ← L+E |
2008 | SHLD 3050 |
L → 3050 & H → 3051 |
200B | HLT | Stops execution |
Explanation:
- LHLD 2050 loads the value at 2050 in L register and that in 2051 in the H register (first number)
- XCHG copies the content of the H to D register and L to E register
- LHLD 2052 loads the value at 2052 in L register and that in 2053 in the H register (second number)
- DAD D adds the value of H with D and L with E and stores the result in H and L
- SHLD 3050 stores the result at memory location 3050
- HLT stops execution
Please Login to comment...