Add Two 8 Bit Numbers and Show The Result in Decimal
Add Two 8 Bit Numbers and Show The Result in Decimal
Program 15: Add two 8-bit numbers and show the result in decimal number system.
Flowchart:
Start
Stop
Move the second operand
from memory to register B.
Add B with A.
If
Carry?
No
Yes
Increment register C.
Page 1 of 3
8085 Programs
Program:
Address
2000
Mnemonics
LXI
Operand
H, 3000H
Opcode
21
Remarks
Load H-L pair with address 3000H.
2001
00
Lower-order of 3000H.
2002
30
Higher-order of 3000H.
2003
MOV
A, M
7E
2004
INX
23
2005
MOV
B, M
46
2006
MVI
C, 00H
0E
00
80
Add B with A.
27
D2
200B
0E
Lower-order of 200EH.
200C
20
Higher-order of 200EH.
2007
2008
ADD
2009
DAA
200A
JNC
B
200EH
200D
INR
0C
Increment reg. C.
200E
INX
23
200F
MOV
M, A
77
2010
INX
23
2011
MOV
M, C
71
2012
HLT
76
Halt.
Explanation:
This program adds two operands stored in memory location 3000H and 3001H, and shows
the result in decimal number system.
Let us assume that the operands stored at memory location 3000H is 08H and 3001H is 05H.
After addition, instead of showing the result in hexadecimal as 0DH, it shows the result in
decimal as 13.
Initially, H-L pair is loaded with the address of first memory location.
The first operand is moved to accumulator from memory location 3000H and H-L pair is
incremented to point to next memory location.
The two operands stored in register A and B are added and the result is stored in accumulator.
Page 2 of 3
8085 Programs
Then, carry flag is checked for carry. If there is a carry, C register is incremented.
H-L pair is incremented and the result is moved from accumulator to memory location
3002H.
H-L pair is again incremented and carry (either 0 or 1) is moved from register C to memory
location 3003H.
Output:
Before Execution:
3000H:
08H
3001H:
05H
After Execution:
3002H:
13
3003H:
00H
Page 3 of 3