 
 
 
 
 
   
 個の要素を持つ配列 array[
 個の要素を持つ配列 array[ ] の和、すなわち
] の和、すなわち
 の時の
 の時の  を求めるのがプログラム LoadStore3.asm であった。
 を求めるのがプログラム LoadStore3.asm であった。
 であれば、MIPS のアセンブリ言語の命令 add を 2 回書くだけで良いが、
 であれば、MIPS のアセンブリ言語の命令 add を 2 回書くだけで良いが、
 が大きくなると add 命令の記述回数もどんどん増えていってしまい、
大変である。
 が大きくなると add 命令の記述回数もどんどん増えていってしまい、
大変である。
このように、同じような命令を繰り返し実行するプログラムを記述する時のために、 ほとんどのプログラム言語では「繰り返し構造」という仕組みを用意している。 たとえば、C 言語では (1) 式は以下のように記述できる。
![\begin{figure}{\tt
i=0;\\
S=0;\\
while(i < n)\{\\
\hspace*{1cm} S = S + array[i];\\
\hspace*{1cm} i = i+1;\\
\}
}
\end{figure}](img10.png) 
ここで、i はカウンタのようなもので i=i+1 に従って 1、2、3、と値が増えていき、 i<n が成り立っている間は while ループの中身、すなわち S = S + array[i] が実行される。 i が n 以上になるとプログラムは while ループを外れるが、 そのとき S の値は (1) 式で表される配列 array[] の 和になっている、という仕組みである。
この仕組みを MIPS のアセンブリ言語で行なうのがプログラム SumArray.asm である。
このプログラムは完成済みのものなので、動かして動作を確認してみてほしい。
 であり、array[
 であり、array[ ]
]  (
 (
 ) の値がメモリに格納されている
ときに (1) 式を計算するプログラムである。
) の値がメモリに格納されている
ときに (1) 式を計算するプログラムである。
 の役割はどのレジスタが担っているか?
 の役割はどのレジスタが担っているか?