How to add two assembly arrays in arduino
add r16, Z+


You probably meant something like
add r16, memory[Z+]

However, the AVR is a RISC processor. It has instructions to address the
memory, and instructions to do arithmetics, but it has no “complex”
instructions that both address the memory and do arithmetics with the
addressed data. So you have to use separate instructions to:

Load (ld) the data from RAM

do the arithmetics

store (st) the result in RAM


Now, looking at your assemble code, I have a few comments:

If you are mixing assembly and C/C++, you should pay attention to the
ABI conventions. Specifically, some registers, like r28 and
r29, “belong” to the caller. If your function needs to use them, it
should save their contents (typically by pushing them to the
stack) before clobbering them, and restore them (pop) before
returning.

For adding two 8-bit numbers (a + b), a single addition is enough.
There is no point in starting the addition with zero (i.e. computing
0 + a + b).

For managing the counter, it can be more convenient to decrement the
initial count you where given (like in C: if (--length) return;)
rather than using an extra variable that is incremented.

There is no need to split such a simple function into smaller
functions.