In the previous program, we saw how we can add two 8-bit hexadecimal numbers which output a 16-bit hexadecimal number.

In this program, we are going to use the same logic but instead of using a hexadecimal number, we are going to use decimal numbers.

The whole program is going to remain the same but there will be two added instructions. Moving on, in this program, we are going to use immediate addressing mode.

The first thing that we’ll do is use two successive memory locations to store the values that we are going to use, and we will require more two memory locations to store the result.
So, like the previous program, we are going to use 2000H – 2003H memory location.

Input:

Let the first 8-bit decimal number be 82D, and the second 8-bit decimal number be 97D, we are going to store these two numbers in memory location 2000H and 2001H.
And then we are going to store the result in 2002H and 2003H.

Program:
LXI H,2000H
MVI C,00
MOV A,M
INX H
ADD M
DAA
JNC Label
INR C
Label STA 2002
MOV A,C
STA 2003
HLT

Programming Details
Memory Location OPCODE Operand Label Hex Code
2004 LXI H, 2000H 21H
2005 00H
2006 20H
2007 MVI C,00 OEH
2008 00H
2009 MOV A,M 7EH
200A INX H 23H
200B ADD M 23H
200C DAA 27H
200D JNC Label D2H
200E 11H
200F 20H
2010 INR C 0CH
2011 STA 2003 32H
2011 02H
2012 20H
2013 MOV A,C 79H
2014 STA 2003 32H
2015 03H
2016 20H
2017 HLT 76H