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 –
- 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.
Program –
MEMORY ADDRESS | MNEMONICS | COMMENTS |
---|---|---|
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 |
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 –
- 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.
Please Login to comment...