Write an assembly language program to subtract two numbers
Answers
Explanation:
Here we will see one 8085 program. In this program we will see how to subtract two 8-bit numbers.
Problem Statement −
Write an 8085 Assembly language program to subtract two 8-bit numbers and store the result at locations 8050H and 8051H.
Discussion −
In 8085, the SUB instruction is used 2’s complemented method for subtraction. When the first operand is larger, the result will be positive. It will not enable the carry flag after completing the subtraction. When the result is negative, then the result will be in 2’s complemented form and carry flag will be enabled.
We are using two numbers at location 8000H and 8001H. When the numbers are 78H and 5DH, then the result will be (78 – 5D = 1B) and when the numbers are 23H and CFH, then the result will be (23 – CF = 154) Here 1 indicates the number is negative. The actual result is 54H. It is in 2’s complemented form.
Input
first input
Address
Data
…
…
8000
78
8001
5D
…
…
second input
Address
Data
…
…
8000
23
8001
CF
…
Program
Address
HEX Codes
Labels
Mnemonics
Comments
F000
0E, 00
MVI C,00H
Clear C register
F002
21, 00, 80
LXI H,8000H
Load initial address to get operand
F005
7E
MOV A,M
Load Acc with memory element
F006
23
INX H
Point to next location
F007
46
MOV B,M
Load B with second operand
F008
90
SUB B
Subtract B from A
F009
D2, 0D, F0
JNC STORE
When CY = 0, go to STORE
F00C
0C
INR C
Increase C by 1
F00D
21, 50, 80
STORE
LXI H,8050H
Load the destination address
F010
77
MOV M,A
Store the result
F011
23
INX H
Point to next location
F012
71
MOV M,C
Store the borrow
F013
76
HLT
Terminate the program
Output
first output
Address
Data
…
…
8050
1B
8051
00
…
…
second output
Address
Data
…
…
8050
54
8051
01
…
Explanation:
#include<stdio.h>
int main( ){
int a,b,c;
scanf("%d,%d",&a,&b);
c=a-b;
printf("the difference of the two numbers is %d",c);
return 0;