[Tex/LaTex] tikz positioning. How to place a node below of another only by y coordinate, leaving x alone

nodespositioningtikz-pgf

I have 2 chains in different columns of a table. I need to shift the second chain in a such way that the {mv r0 <- a} would be below the {br a = 0 $end}, as it is depicted : right below the red line.

How to do it without inserting a fake node and adjusting its length?

Desired position

EDIT[as @Werner suggested]: Here is the code to reproduce the example. In the picture above, the right column is allready shifted by a graphical editor, originally they were aligned.

\newcommand*{\ld}[2]{ld\ #1\gets \$#2}
\newcommand*{\st}[2]{st\ #1\to \$#2}
\newcommand*{\add}[2]{add\ #1\gets #2}
\newcommand*{\mul}[2]{mul\ #1\gets #2}
\newcommand*{\mov}[2]{mv\ #1\gets #2}
\newcommand*{\inc}[1]{inc\ #1}
\newcommand*{\brz}[2]{br\ #1=0\ \$#2}

\begin{tikzpicture}
[-,auto,
up/.style={draw=none,above=.5cm},
down/.style={draw=none,below=.5cm},
long/.style={minimum height=2.5cm}]
\matrix [matrix,row sep=0.2cm,nodes={draw,font=\footnotesize},every even column/.style={text centered,text width=2.3cm}]
{
    \node (up1)[up]{};&&\node(up2)[up]{};&&\node (up3)[up]{};&&\node(up4)[up]{};&\\
&\begin{scope}
    [node distance=1mm, start chain=going below];
    \node [anchor=north, on chain] {$\inc a$};
    \node [on chain, long] {$\ld a a$};
    \node [on chain] {$\brz a{end}$};
    \node [on chain] {$\inc a$};
    \node [on chain, long] {$\ld a a$};
    \node [on chain] {$\brz a{end}$};
\end{scope}&
&\begin{scope}
    [node distance=1mm, start chain=going below];
    \node [anchor=north, on chain] {$\mov {r_0}a$};
    \node [on chain, long] {$\ld {r_1} {r_0}$};
    \node [on chain] {$\mul {r_1}{r_1*r_1}$};
    \node [on chain, long] {$\st {r_1} {r_0}$};
\end{scope}\\
    \node (down1)[down]{};&&\node (down2)[down]{};&&\node(down3)[down]{};&&\node(down4)[down]{};&\\
};
\begin{scope}
\draw (up1) to (down1);
\draw (up2) to (down2);
\draw (up3) to (down3);
\draw (up4) to (down4);
\end{scope}
\end{tikzpicture}

Best Answer

The at option combined with a named chain gives a solution: first chain is named ch; first node of second chain is north anchored at north of fourth node of first chain (ch-4.north).

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{chains}
\begin{document}

\newcommand*{\ld}[2]{ld\ #1\gets \$#2}
\newcommand*{\st}[2]{st\ #1\to \$#2}
\newcommand*{\add}[2]{add\ #1\gets #2}
\newcommand*{\mul}[2]{mul\ #1\gets #2}
\newcommand*{\mov}[2]{mv\ #1\gets #2}
\newcommand*{\inc}[1]{inc\ #1}
\newcommand*{\brz}[2]{br\ #1=0\ \$#2}

\begin{tikzpicture}
[-,auto,
up/.style={draw=none,above=.5cm},
down/.style={draw=none,below=.5cm},
long/.style={minimum height=2.5cm}]
\matrix [matrix,row sep=0.2cm,nodes={draw,font=\footnotesize},every even column/.style={text centered,text width=2.3cm}]
{
    \node (up1)[up]{};&&\node(up2)[up]{};&&\node (up3)[up]{};&&\node(up4)[up]{};&\\
   &\begin{scope}
    [node distance=1mm, start chain=ch going below];
    \node [on chain] {$\inc a$};
    \node [on chain, long] {$\ld a a$};
    \node [on chain] {$\brz a{end}$};
    \node [on chain] {$\inc a$};
    \node [on chain, long] {$\ld a a$};
    \node [on chain] {$\brz a{end}$};
\end{scope}&
&\begin{scope}
    [node distance=1mm, start chain=going below];
    \node [on chain,anchor=north,at={(ch-4.north)}] {$\mov {r_0}a$};
    \node [on chain, long] {$\ld {r_1} {r_0}$};
    \node [on chain] {$\mul {r_1}{r_1*r_1}$};
    \node [on chain, long] {$\st {r_1} {r_0}$};
\end{scope}\\
    \node (down1)[down]{};&&\node (down2)[down]{};&&\node(down3)[down]{};&&\node(down4)[down]{};&\\
};
\begin{scope}
\draw (up1) to (down1);
\draw (up2) to (down2);
\draw (up3) to (down3);
\draw (up4) to (down4);
\end{scope}
\end{tikzpicture}
\end{document}

enter image description here