Home > Tutorial > 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命令に書かれたアドレス部をスタックにしまっておくので,それを取り出したとき,この方法を使えば,メモリの中身を使うことができます.