Subsections

3 [例題9]ラベルを2重につける方法

教科書のList5-9のプログラムを例にして,ラベルを2重につける方法について説明する.

3.1 教科書の例

教科書の[例題6](p.97)〜[例題8](p.101)は,いずれも与えられたデータの最大値を求め るプログラムであった.これらの場合,最大値を求めたいデータの数列とその数が与えら れていた.データ数を元に,数列を読みしと比較を繰り返すことにより最大値を探索した. ここでは,データ数が与えられていない場合のテクニックを学習する.

教科書のプログラムの内容は,

である.このプログラム例で学習することは,最終データがあるアドレスにラベル名をつ けることである.それは,プログラム中で示しているように
	DATA  DC   1,5,6,8,9    
	LAST  DS   0      ;数列の最終アドレス+1
とするのである.こうすると数列の先頭のアドレスはDATAで,最終アドレスは LAST-1で示すことができる.

3.2 プログラムの構造とフローチャート

このプログラムのフローチャートを図4に示す.このプログ ラムを理解するために,ここで使われているレジスターやラベルの内容を表 4に示しておく.プログラムの内容を理解するときには,変数が 示す内容を考えるのが第一歩である.諸君も,プログラムの内容を調べるときには,変数 の意味を調べることから始めよ.全て分からなくても良い.分かるものから,その意味を プログラム中に書け.

このプログラムは,そんなに難しくなく,最終アドレス間で次々に加算しているのが理解 できるであろう.

表 2: 汎用レジスターとメモリの内容
GR0 加算途中および結果の合計値
GR1 データの最終アドレス+1(LAST)
GR2 読み込むデータのアドレス(LASTLAST-1)
DATA 加算する数列の先頭アドレス
LAST 加算する数列の最終アドレス
SUM 数列を加算した結果を格納するメモリーのアドレス

図 4: 教科書のList5-9のプログラムの構造とフローチャート
\includegraphics[keepaspectratio, scale=0.8]{flow_chart/REI5-9.eps}



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
2006-02-16


no counter