Home > Tutorial > Lesson 6 |
|
次のプログラムをWCASLUのCASLモードで実行してみよう.
PRG START LAD GR1,1 LD GR2,AA LD GR3,AA,GR1 RET AA DC 3 DC 4 DC 5 END
LD GR2,AA を実行すると,ラベルAAに定義されている定数がGR2にロードされますので,(GR2)=3 となります.
一方で,LD GR3,AA,GR1 のように書くと,ラベルAAにGR1の内容を加算した値が有効アドレスとして使用されます.GR1には1が入っていますから,AA+1のところに定義されている定数がGR3にロードされます.それでGR3には4が入るわけです.
第3オペランドにレジスタを書くと,そのレジスタが指標レジスタ(インデックスレジスタ)として使用されます.具体的には,操作対象となる有効アドレスが,アドレス部の番地+(指標レジスタ)で求められることになります.
上の例では,「AA+(GR1)が有効アドレスとなり,(AA+(GR1))がGR3にロードされる」ということになります.
このようにして有効アドレスを指標レジスタを用いて計算する方法をインデックス修飾と言います.インデックス修飾は,ロード命令だけでなく,ストア命令,算術論理演算,シフト演算,分岐命令などでも使用することが可能です.
ここで注意しなければならないのは,「GR0を指標レジスタとして使うことはできない!」ということです.