Statement: Add the 16-bit number stored in memory locations 2000H and 2001H to the 16-bit number stored in memory locations 2002H and 2003H. The most significant bytes of the two numbers are stored in memory locations 2001H and 2003H. Store the result in memory locations 2004H and 2005H. The most significant byte is stored in memory location 2005H.
Example:
(2000H) = 21H
(2001H) = 20H
(2002H) = 34H
(2003H) = 5AH
Result = 2021H + 5A34H = 7A55H
(2004H) = 55H
(2005H) = 7AH
Program 1 using 8-bit addition instructions:
LHLD 2000H ; Obtain the first 16-bit number in HL register pair
XCHG ; Save the first 16-bit number in DE register pair
LHLD 2002H ; Obtain the second 16-bit number in HL register pair
MOV A, E ; Move the lower byte of the first number into accumulator
ADD L ; Add the lower byte of second number to the accumulator
MOV L, A ; Store the result in L register
MOV A, D ; Move the higher byte of the first number into accumulator
ADC H ; Add the higher byte of second number with the carry
MOV H, A ; Store the result in H register
SHLD 2004H ; Store the 16-bit result in location 2004H and 2005H
HLT ; Terminate program execution
Program 2 using 16-bit addition instructions:
LHLD 2000H ; Obtain the first 16-bit number in HL register pair
XCHG ; Save the first 16-bit number in DE register pair
LHLD 2002H ; Obtain the second 16-bit number in HL register pair
DAD D ; Add the contents of DE and HL register pair
SHLD 2004H ; Store the 16-bit result in location 2004H and 2005H
HLT ; Terminate program execution
Comments
Post a Comment