Yes, $\Bbb Z_2\times\Bbb Z_2$ is generated by $\langle 0,1\rangle$ and $\langle 1,0\rangle$; for convenience let me call these elements $a$ and $b$. The other non-identity element is $\langle 1,1\rangle$, which I’ll call $c$.
- If $f:\Bbb Z_2\times\Bbb Z_2\to\Bbb Z_2\times\Bbb Z_2$ is an automorphism, it must take $a$ and $b$ to different non-identity elements of $\Bbb Z_2\times\Bbb Z_2$. (Why must they not be the identity? Why must they be distinct?)
Thus, to construct an automorphism $f$ of $\Bbb Z_2\times\Bbb Z_2$ you need only pick one of $a,b$, and $c$ to be $f(a)$ and another of them to be $f(b)$. For instance, you might decide to let $f(a)=b$ and $f(b)=c$. Now just use the properties of a homomorphism to compute $f$ in its entirety. For instance, $c=a+b$, so you must have $f(c)=f(a)+f(b)=b+c=a$, and of course $f(\langle 0,0\rangle=\langle 0,0\rangle$, which I’ll call $e$. You can display $f$ in tabular form:
$\begin{array}{rcc} x:&e&a&b&c\\ f(x):&e&b&c&a \end{array}$
(Of course you may prefer to use the ‘real’ identities of $e,a,b$, and $c$ instead of these short aliases.) Without too much work you can construct all of the automorphisms and write out their corresponding tables.
If you want to count the automorphisms without actually writing them all down, you’ll want not only the bullet point above, but also this one:
- Every function from $\{a,b\}$ to $\Bbb Z_2\times\Bbb Z_2$ that sends $a$ and $b$ to distinct members of $\{a,b,c\}$ extends to a unique automorphism of $\Bbb Z_2\times\Bbb Z_2$. (Why?)
Thus, to count the automorphisms of $\Bbb Z_2\times\Bbb Z_2$ you need only count the injective functions from $\{a,b\}$ to $\{a,b,c\}$. How many ways are there to pick $f(a)$? Once you’ve done that, how many ways are there to pick $f(b)$? How many ways are there to pick both?