# 8085 program to subtract two 16-bit numbers with or without borrow

Problem – Write an assembly language program in 8085 microprocessor to subtract two 16 bit numbers.

Assumption –

• Starting address of program: 2000
• Input memory location: 2050, 2051, 2052, 2053
• Output memory location: 2054, 2055

Example –

```INPUT:
(2050H) = 19H
(2051H) = 6AH
(2052H) = 15H
(2053H) = 5CH

OUTPUT:
(2054H) = 04H
(2055H) = OEH```

RESULT:
Hence we have subtracted two 16 bit numbers.

Algorithm –

1. Get the LSB in L register and MSB in H register of 16 Bit number.
2. Exchange the content of HL register with DE register.
3. Again Get the LSB in L register and MSB in H register of 16 Bit number.
4. Subtract the content of L register from the content of E register.
5. Subtract the content of H register from the content of D register and borrow from previous step.
6. Store the result in memory location.

Program –

2003 XCHG EXCHANGE H-L PAIR WITH D-E PAIR
2007 MVI C, 00 C<-00H
2009 MOV A, E A<-E
200A SUB L A<-A-L
200B STA 2054 2054<-A
200E MOV A, D A<-D
200F SBB H SUBTRACT WITH BORROW
2010 STA 2055 2055<-A
2013 HLT TERMINATES THE PROGRAM

Explanation –

2. XCHG: exchange the content of HL pair with DE.
4. MOV A, E: move the content of register E to A.
5. SUB L: subtract the content of A with the content of register L.
6. STA 2054: store the result from accumulator to memory address 2054.
7. MOV A, D: move the content of register D to A.
8. SBB H: subtract the content of A with the content of register H with borrow.
9. STA 2055: store the result from accumulator to memory address 2055.
10. HLT: stops executing the program and halts any further execution.