2003.11.07
CASLU & COMETU
Lesson 6 インデックス修飾
|
|
|
インデックス修飾とループ処理を利用したプログラム例 解説
前のページの設問について解説します.
SUM START
LAD GR1,0 ;GR1を初期化:GR1 ← 0
LAD GR0,0 ;GR0を初期化:GR0 ← 0
LOOP ADDA GR0,DATA,GR1 ;GR0にDATA[GR1]の値を加算: GR0 ← (GR0) + (DATA +(GR1))
ADDA GR1,CONST1 ;GR1を1増やす: GR1← (GR1) +(CONST1)
CPA GR1,N ;GR1を(N)と算術比較
JMI LOOP ;負なら,つまり(GR1)<(N)なら,LOOPに戻る.
ST GR0,ZZ ;GR0をZZにストアする: ZZ ← (GR0)
RET
ZZ DS 1
CONST1 CD 1
N DC 5
DATA DC 5
DC 3
DC 8
DC 9
DC 7
END
- 何を行うプログラムか→ DATAに定義されている整数値の合計を求めるプログラム.
- GR0の役割はなにか→ 合計の値を求めるために使われている.最初に0がロードされ,ADDAで,(DATA+(GR1))が加算されていますね.
- GR1の役割はなにか→ 現在のところ何回繰り返したかを表すカウンタであり,DATAから何番目の値を加算するかを示すポインタの役割をする.ポインタの役割を果たすために,インデックス修飾を用いている.高級言語の配列の添え字のような役割をしている.
- Nには何が定義されているか→ データの数が定義されている.
- DATAには何が定義されているか→ 合計を求める対象となる整数値が定義されている.