CASL U - 実効アドレス
 前へ 目次へ 次へ

 実効アドレス

 実効アドレスとは、処理の対象となるアドレスそのものをいう。
 例えば、加算命令を次のように書いたとする。

@ ADDA  GR0, ADR1
A ADDA  GR0, ADR1, GR1

 ADDAは算術加算命令である。
 @は次のレジスタGR0の内容とADR1番地(ラベルという)の内容を加算して、計算結果をレジスタGR0に記憶することを表している。この場合の実効アドレスはADR1番地となる。これをアドレスの直接指定という。
 Aは次のレジスタGR0の内容と「ADR1番地にレジスタGR1の内容を論理加算したものを番地としてその番地の内容」を加算して、計算結果をレジスタGR0に記憶することを表している。この場合の実効アドレスは(ADR1+GR1)番地となる。これをアドレスの指標修飾指定インデックス修飾指定)という。アドレスの指標修飾に使用できる汎用レジスタはGR1〜GR7の7つである。GR0は指標修飾に使えない。

 例えば、0100番地からのメモリの状態及びレジスタGR0, GR1の内容が下図のとおりで、ADR1番地が0100番地とする。(値及び番地はすべて16進数とする。)

メモリ レジスタ
0100
0101
0102
0103
0104
0005
0010
0023
0013
0203
GR0=0010
GR1=0002

 @の場合、加算の結果は
    0010(GR0の内容)+0005(0100番地の内容)
    =0015
となる。
 Aの場合、加算の結果は
    0010(GR0の内容)+0023(0100+0002番地の内容)
    =0033
となる。GR0に加算する値が記憶されている番地は、ADR1の0100番地とGR1の0002を加算した0102番地となる。この番地を実効アドレスという。

 実効アドレスを計算する場合は論理加算(負数を考えない)で行う。アドレスには負数がないからである。

 

例題 メモリ、ラベル及びレジスタが下図のとき、加算結果を答えよ。(値及び番地はすべて16進数とする。)

レジスタ メモリ
GR0=0022
GR1=0001
GR2=0003
GR3=FFFF
1200
1201
1202
1203
1204
1205
1206
0021
0033
0200
0234
0101
0011
0305
ラベル
ADR1=1201
ADR2=1204

(1)  ADDA  GR0, ADR1

答え 0055
レジスタGR0の内容である0022とラベルADR1(1201番地)の内容である0033を加算する。加算結果はGR0に記憶される。

(2)  ADDA  GR0,  ADR1,  GR2

答え 0123
実効アドレスはラベルADR1(1201番地)とレジスタGR2の内容である0003を加算した1204番地である。
レジスタGR0の内容である0022と実効アドレス1204番地の内容である0101を加算する。

(3)  ADDA  GR2,  ADR2,  GR3

答え 0237
実効アドレスはラベルADR2とレジスタGR3を加算したものである。したがって、1204+FFFF=11203となるが、COMETUは16ビット、すなわち16進数で4けたまでしか記憶できないので実効アドレスは1203番地となる。
レジスタGR2の内容である0003と実効アドレス1203番地の内容である0234を加算する。


 前へ 目次へ 次へ
 CASL U Copyright © 2003  Hiroshi Masuda

 

 

inserted by FC2 system