Skip to content
Related Articles

Related Articles

Improve Article
8085 program to add two 16 bit numbers
  • Difficulty Level : Easy
  • Last Updated : 09 Dec, 2019

Problem – Write an assembly language program to add two 16 bit numbers by using:

  • (a) 8 bit operation
  • (b) 16 bit operation

Example –


(a) Addition of 16 bit numbers using 8 bit operation – It is a lengthy method and requires more memory as compared to 16 bit operation.

Algorithm –



  1. Load the lower part of first number in B register
  2. Load the lower part of second number in A (accumulator)
  3. Add both the numbers and store
  4. Load the higher part of first number in B register
  5. Load the higher part of second number in A (accumulator)
  6. Add both the numbers with carry from the lower bytes (if any) and store at the next location

Program –

MEMORY ADDRESSMNEMONICSCOMMENTS
2000LDA 2050A ← 2050
2003MOV B, AB ← A
2004LDA 2052A ← 2052
2007ADD BA ← A+B
2008STA 3050A → 3050
200BLDA 2051A ← 2051
200EMOV B, AB ← A
200FLDA 2053A ← 2053
2012ADC BA ← A+B+CY
2013STA 3051A → 3051
2016HLTStops execution

Explanation –

  1. LDA 2050 stores the value at 2050 in A (accumulator)
  2. MOV B, A stores the value of A into B register
  3. LDA 2052 stores the value at 2052 in A
  4. ADD B add the contents of B and A and store in A
  5. STA 3050 stores the result in memory location 3050
  6. LDA 2051 stores the value at 2051 in A
  7. MOV B, A stores the value of A into B register
  8. LDA 2053 stores the value at 2053 in A
  9. ADC B add the contents of B, A and carry from the lower bit addition and store in A
  10. STA 3051 stores the result in memory location 3051
  11. HLT stops execution

(b) 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 operation.

Algorithm –

  1. Load both the lower and the higher bits of first number at once
  2. Copy the first number to another register pair
  3. Load both the lower and the higher bits of second number at once
  4. Add both the register pairs and store the result in a memory location

Program –

MEMORY ADDRESSMNEMONICSCOMMENTS
2000LHLD 2050H-L ← 2050
2003XCHGD \leftrightarrow H & E \leftrightarrow L
2004LHLD 2052H-L ← 2052
2007DAD DH ← H+D & L ← L+E
2008SHLD 3050A → 3050
200BHLTStops execution

Explanation –

  1. LHLD 2050 loads the value at 2050 in L register and that in 2051 in H register (first number)
  2. XCHG copies the content of H to D register and L to S register
  3. LHLD 2052 loads the value at 2052 in L register and that in 2053 in H register (second number)
  4. DAD D adds the value of H with D and L with E and stores the result in H and L
  5. SHLD 3050 stores the result at memory location 3050
  6. HLT stops execution

Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.

 

My Personal Notes arrow_drop_up
Recommended Articles
Page :