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.
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.
- Starting address of program: 2000
- Input memory location: 2050, 2051, 2052, 2053
- Output memory location: 2054, 2055
INPUT: (2050H) = 19H (2051H) = 6AH (2052H) = 15H (2053H) = 5CH OUTPUT: (2054H) = 04H (2055H) = OEH
Hence we have subtracted two 16 bit numbers.
- Get the LSB in L register and MSB in H register of 16 Bit number.
- Exchange the content of HL register with DE register.
- Again Get the LSB in L register and MSB in H register of 16 Bit number.
- Subtract the content of L register from the content of E register.
- Subtract the content of H register from the content of D register and borrow from previous step.
- Store the result in memory location.
|2000||LHLD 2050||Load H-L pair with address 2050|
|2003||XCHG||EXCHANGE H-L PAIR WITH D-E PAIR|
|2004||LHLD 2052||Load H-L pair with address 2052|
|2007||MVI C, 00||C<-00H|
|2009||MOV A, E||A<-E|
|200E||MOV A, D||A<-D|
|200F||SBB H||SUBTRACT WITH BORROW|
|2013||HLT||TERMINATES THE PROGRAM|
- LHLD 2050: load HL pair with address 2050.
- XCHG: exchange the content of HL pair with DE.
- LHLD 2052: load HL pair with address 2050.
- MOV A, E: move the content of register E to A.
- SUB L: subtract the content of A with the content of register L.
- STA 2054: store the result from accumulator to memory address 2054.
- MOV A, D: move the content of register D to A.
- SBB H: subtract the content of A with the content of register H with borrow.
- STA 2055: store the result from accumulator to memory address 2055.
- HLT: stops executing the program and halts any further execution.