Home > Tutorial > Lesson 6

2003.11.07

CASLU & COMETU

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を指標レジスタとして使うことはできない!」ということです.