Statement: Find the sum of the series of numbers. The length of the series is given in the memory location 2000H and the series itself begins from memory location 2001H.
A). If the sum is an 8-bit number, store the sum at memory location 2005H.
B). If the sum is a 16-bit number, store the sum at memory locations 2005H and 2006H.
A).
EXAMPLE:
(2000H) = 04H
(2001H) = 30H
(2002H) = 15H
(2003H) = 13H
(2004H) = 33H
Result = 30H + 15H + 13H + 33H = 8BH
Therefore, (2005H) = 8BH
FLOW CHART:
PROGRAM:
LDA 2000H ; Get the length of the series
MOV C, A ; Initialise counter
SUB A ; Make Sum = 0
LXI H, 2001H ; Initialise pointer
BACK: ADD M ; Sum = Sum + data
INX H ; Increment pointer
DCR C ; Decrement counter
JNZ BACK ; If counter is not equal to zero, repeat
STA 2005H ; Store result
HLT ; Terminate program execution
B).
EXAMPLE:
(2000H) = 04H
(2001H) = 62H
(2002H) = 52H
(2003H) = 3BH
(2004H) = 9AH
Result = 62H + 52H + 3BH + 9AH = 0189H
Therefore, (2005H) = 89H and (2006H) = 01H
FLOW CHART:
PROGRAM:
LDA 2000H ; Get the length of the series
MOV C, A ; Initialise counter
LXI H, 2001H ; Initialise pointer
SUB A ; Make Sumlow = 0
MOV B, A ; Make Sumhigh = 0
BACK: ADD M ; Sum = Sum + data
JNC SKIP ; If no carry,then move to SKIP
INR B ; Add carry to higher byte of sum
SKIP: INX H ; Increment pointer
DCR C ; Decrement counter
JNZ BACK ; If counter is not equal to zero, repeat
STA 2005H ; Store lower byte of result
MOV A, B ; Move higher byte of result
STA 2006H ; Store higher byte of result
HLT ; Terminate program execution
Comments
Post a Comment