				;
				;		scalar product
				;
				
size				dcd		4
vector_a			dcd		1,2,3,4
vector_b			dcd		10,20,30,40
				
				mov		r3, #size
				ldr		r3,[r3]
				
				mov		r5,#vector_a
				mov		r6,#vector_b
				
				mov		r4, #0
				
scalar_prod_loop
				cmp		r3, #0
				beq		end_program
				
				ldr		r1, [r5] ; a[i]
				ldr		r2, [r6] ; b[i]
				bl		multiply ; branch with link, call the subroutine
				; r0 = a[i]*b[i]
				; r0 * 2
				mov		r1, r0
				mov		r2, #2
				bl		multiply
				add		r4, r4, r0 ; r4 = r4 + a[i]*b[i]*2
				
				add		r5,r5,#4
				add		r6,r6,#4
				sub		r3,r3,#1
				b		scalar_prod_loop
				
				;
				;		this is the mutiply subroutine
				;		Input:
				;		R1 = first operand
				;		R2 = second operand
				;		Output:
				;		R0 = product
				;		Note:
				;		R2 will be changed
				;
multiply
				mov		r0, #0 ; result = 0
				
multiply_loop
				cmp		r2,#0 ; b == 0 ??
				beq		end_multiply
				
				add		r0,r0,r1 ; r0 = r0 + r1, result = result + a
				sub		r2,r2,#1 ; r2 = r2 - 1, b = b - 1
				
				b		multiply_loop
end_multiply
				mov		pc, lr
				;
				;
				;
				
end_program
				end
				
