The amsmath package provides the \overset and \underset macros that can be used to place one symbol above or below another. If you want text above and below, you could use \DeclareMathOperator* (also from amsmath).
\documentclass{minimal}
\usepackage{amsmath}
\DeclareMathOperator*{\eq}{=}
\begin{document}
\begin{equation*}
\underset{b}{=} \quad \eq^a_b
\end{equation*}
\end{document}
There shouldn't be any problems using this in amsmath environments such as align.
\begin{align*}
A &\eq^b_a B \\
&\eq^b_a C
\end{align*}
However, if you use it in the middle column of an eqnarray or eqnarray* (which are generally considered to be obsolete), then you will need \displaystyle before \eq.
All of the above applies to egreg's suggestion of defining \eq via
\newcommand{\eq}[2]{\mathrel{\operatorname*{=}_#1^#2}}}
which seems to improve the spacing (and may be better in other ways as well).