Subsections

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

教科書のList 5-4のプログラムを例にして,論理演算とアドレス修飾について説明する. 以下のことが,ここでの学習の重要なポイントである. -5pt

2.1 論理演算

2.1.1 教科書の例

教科書のプログラムは, -3pt と言う問題を解く,プログラムである.

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

である.

2.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つずつ値が増加するものをカウンターと呼ぶこ とがある.これを使うためには,

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

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

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



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


no counter