1 [例題4]論理演算とアドレス修飾

教科書のList5-4のプログラムを例にして、論理演算とアドレス修飾について説明する。

1.1 論理演算

1.1.1 教科書の例

教科書のプログラムは、 と言う問題を解く、プログラムである。

このようなプログラムを作成するために必要なことは、

である。

1.1.2 アドレス修飾

大まかなプログラムの流れは、分かった。また、論理演算も解くに説明することもないだ ろう。演算対象のデータのそれぞれのビット毎の論理和(OR)と論理積(AND)、排他的論理 和(XOR)を計算しているだけである。

プログラムの命令領域とデータ領域は、図1のようになるだろう。プ ログラムの書き方によっては、こうならないこともあるが、通常はこのようになる。

図 1: 教科書のList5-4のプログラムを実行する場合のメモリ構造。図中の?は 値はあるが、不明を示している。
\includegraphics[keepaspectratio, scale=0.8]{figure/memory5-4.eps}

この場合、プログラムのデータ領域にアクセスする事を考える。ラベルABは 簡単で、ラベル名を示せば良い。ラベル名はアドレスを示すからである。問題は、結果を 格納する領域である。このアドレスは、3つ続いて確保されているが、先頭だけANS とラベル名がある。残りの2つの表し方である。これらのアドレスは、ANS+1ANS+2である。ANSのアドレスにオフセットの値を加算するのである。

プログラムで使うメモリーのアドレスは、ANS+オフセットで、オフセットは、 0,1,2とすれば良い。論理和の結果をANS+0、論理積の結果をANS+1、論理 和の結果をANS+2に格納する。プログラムでは、オフセットの0,1,2GR2 に入れておき、


 		 ST 		 GR1,ANS,GR2 		  
と書く。演算の結果(GR1)の値が、ANSにオフセット値(GR2)を加えたアド レスに格納される。

ここで、使っているGR2のように、1つずつ値が増加するものをカウンターと呼ぶこ とがある。これを使うためには、

とする。このテクニックは、重要である。内容をよく理解する必要がある。

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

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



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成16年12月25日


no counter