Home > Tutorial > Lesson 6

2003.11.07

CASLU & COMETU

Lesson 6 インデックス修飾


レジスタの中のアドレスを使ってメモリにアクセス

以下のプログラムでは,GR2にAA番地の内容をロードしています.

PRG	START
	LAD	GR1,AA		;#0020番地
	LD	GR2,0,GR1		;#0022番地
	RET			;#0024番地
AA	DC	8		;#0025番地
	END

最初にLAD命令でGR1にAAのアドレスを入れています. 注釈のようなアドレスに割り当てられたとすると,GR1には 0025 が入ります.
次に,LD命令は,アドレス部が0なので,有効アドレス(EA)は,0+(GR1)=0025 になります. なので,0025番地(AA番地)の内容である8がGR2にロードされるのです.


以下の命令のアドレス生成部の様子をCOMETモードで見てみましょう.

	LD	GR2,0,GR1

IRの2語目(アドレス部)が 0000であるので,インデックスレジスタとして使われているGR1の内容とアドレス加算された結果は,0025でGR1の中身そのものとなっています.

このようにして,汎用レジスタの中にアドレスが入っている場合に,そのアドレスの中身にアクセスすることができます.これはLD命令ばかりでなく,ADDAなどの演算命令やST命令などでも使えます.

後で出てくるスタックではPUSH命令に書かれたアドレス部をスタックにしまっておくので,それを取り出したとき,この方法を使えば,メモリの中身を使うことができます.