Subtract two 16-bit numbers in 8085

In this program, we are going to write an assembly language program to subtract two 16-bit numbers in 8085 microprocessor with a program flow chart and explanation of the program.

Subtract two 16-bit numbers in 8085

Program Statement

Subtract the 16-bit number in memory locations D002H and D003H from the 16-bit number in memory locations D000H and D001H. The most significant 8 bits of the two numbers are in memory locations D001H and D003H. Store the result in memory locations D004H and D005H with the most significant byte in memory location D005H.

Explanation of Program

  • We have two 16*bit numbers, we have to subtract the word at memory locations D002H and D003H from the word at memory locations D000H and D001H.
  • We will subtract the two LSBs and MSBs separately and store the result.
    • E.g. D000H = 31H, D001H = 12H, D002H = 00H, D003H = 01H
    • Result: 1234H – 0100H = 1134H
    • D004H = 34H, D005H = 11H

Assembly Language Program

InstructionCommentOperation
LHLD D000HLoad the first 16*bit numbers in the HL register pair.H = 12H, L = 34H
XCHGsave the first 16-bit number in the DE register pair.D = 12H, E = 34H
LHLD D002HLoad the second 16-bit number in the HL register pair.H = 01H, H = 00H
MOV A, ELoad the lower byte of the first number in the accumulatorA = 34H
SUB LSubtract the lower byte of the second numberA = A – L
A = 34 – 00
A = 34H, CY = 0
MOV L, AStore the result in register L.L = 34H
MOV A, DLoad the higher byte of the first number in the accumulatorA = 12H
SBB HSubtract the higher byte of the second number with a borrow of the previous subtraction.A = A – H – CY
A = 12 – 01 – 0
A = 11H
MOV H, AStore the result in register H.H = 11H
SHLD D004HStore the 16-bit result in memory locations D004H and D005HD004H = 34H
D005H = 11H
HLTTerminate program executionStop

Flow Chart of Program

Subtract two 16-bit numbers in 8085 flow chart
Sr. No.Name of the 8085 Programs
1.Write a program to load the data into the accumulator and any register.
2.Write a program to exchange the contents of memory locations.
3.Add two 8-bit numbers.
4.Subtract two 8-bit numbers.
5.Add two 16-bit numbers.
6.Subtract two 16-bit numbers
7.Find the 1’s complement of a Number
8.Find the 2’s complement of a Number
9.8085 Program To Mask The Lower Nibble
10.8085 Program To Mask The Upper Nibble
11.8085 program to pack the two unpacked BCD numbers
12.8085 program to Unpack the two packed BCD numbers
13.8085 program to find the sum of a series of 8-bit numbers
14.8085 Program to sort the numbers in ascending order
15.8085 Program to sort the numbers in Descending order
16.8085 Program to Multiply Two 8-bit Numbers
17.8085 Program to Divide 16-bit number by 8-bit number
18.8085 Program to Find the Number of Negative Numbers in Array
19.8085 Program to Find Maximum Number in Array
20.8085 Program to count the number of 1’s in a register

Hello friends, my name is Trupal Bhavsar, I am the Writer and Founder of this blog. I am Electronics Engineer(2014 pass out), Currently working as Junior Telecom Officer(B.S.N.L.) also I do Project Development, PCB designing and Teaching of Electronics Subjects.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

telegram logo Join Our Telegram Group!