Subsections
教科書のList 5-4のプログラムを例にして,論理演算とアドレス修飾について説明する.
以下のことが,ここでの学習の重要なポイントである.
-5pt
- アドレス修飾の使い方
- カウンターとインクリメントのプログラムの記述方法.
教科書のプログラムは,
-3pt
- ラベルA,Bに#0030,#009Fが格納されている.
- ラベルANSから,3語このプログラムで確保されている.
- ANSから確保された3語の領域に,A AND BとA OR B,A XOR
Bの演算結果を格納せよ.
と言う問題を解く,プログラムである.
このようなプログラムを作成するために必要なことは,
- データ領域
-3pt
- 演算の対象データ(#0030,#009F)をラベル(A,B)を指定してメ
モリーに書き込む.
- 演算結果を書き込む領域をラベル(ANS)を指定して,確保する.
- 命令領域
-3pt
- 演算対象データをレジスターにコピー
- 演算の実行
- 計算結果の格納
である.
大まかなプログラムの流れは,分かった.また,論理演算も説明することもないだ
ろう.演算対象のデータのそれぞれのビット毎の論理和(OR)と論理積(AND),排他的論理
和(XOR)を計算しているだけである.
プログラムの命令領域とデータ領域は,図1のようになるだろう.プ
ログラムの書き方によっては,こうならないこともあるが,通常はこのようになる.
図 1:
教科書のList5-4のプログラムを実行する場合のメモリ構造.図中の?は
値はあるが,不明を示している.
|
この場合,プログラムのデータ領域にアクセスする事を考える.ラベルAやBは
簡単で,ラベル名を示せば良い.ラベル名はアドレスを示すからである.問題は,結果を
格納する領域である.このアドレスは,3つ続いて確保されているが,先頭だけANS
とラベル名がある.残りの2つの表し方である.これらのアドレスは,ANS+1と
ANS+2である.ANSのアドレスにオフセットの値を加算するのである.
プログラムで使うメモリーのアドレスは,ANS+オフセットで,オフセットは,
0,1,2とすれば良い.論理和の結果をANS+0,論理積の結果をANS+1,論理
和の結果をANS+2に格納する.プログラムでは,オフセットの0,1,2をGR2
に入れておき,
ST GR1,ANS,GR2
と書く.演算の結果(
GR1)の値が,
ANSにオフセット値(
GR2)を加えたアド
レスに格納される.
ここで,使っているGR2のように,1つずつ値が増加するものをカウンターと呼ぶこ
とがある.これを使うためには,
- カウンターの初期化.ここでは,GR2をゼロに設定する.
- カウンターのインクリメント.カウンターの値を1増加させる.
とする.このテクニックは,重要である.内容をよく理解する必要がある.
このプログラムのフローチャートを図
2に示す..
図 2:
教科書のList5-4のプログラムの構造とフローチャート
|
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
2006-02-14