Subsections
教科書のList5-3のプログラムを例にして,マスク処理と条件分岐について説明する.
データの特定のビットパターンを選び出すことをマスキングという.このビットパターン
を選び出すために,演算を行うわけであるが,その演算のためのデータをマスクと言う.
例えば,教科書のList5-3の場合,2行目の
AND GR0,MASKがマスキング(マスク処理)
であって,ラベル
Aのデータがマスクである.このマスクを用いたマスキングにより,
GR0特定のビットパターンを選び出している.
ここでは,次のようにしている.
なので
としている.仮に,ラベル
Aの値が
としたら,
となる.この例から分かるように,論理積(
AND)の結果は,ラベル
Aの最下位ビッ
トに依存していることが分かる.最下位ビットの1の有無は,フラグレジスタの
ZFを
見れば分かる.演算の結果,全てのビットがゼロになれば,
ZF=1となる.
データの調べたいビットは,マスクにより指定している.このように,調べたいビットを
しているデータマスクという.要するに,お面(マスク)で顔の一部を隠すように,興味の
ないビットを隠しているのである.
先の例でも分かるが,
ANDを使ったマスク処理の場合,マスクは興味の対象のビット
を1,どうでも良いビットを0にする.そうすると,興味のないビットは全てゼロとなり,
重要なビットは変更されない.先の場合,ある特定の1ビットの状態が分かれば良かった
ので,マスク処理後,直ぐにフラグレジスタ
ZFを見た.もう少し複雑な場合は,こ
れではだめである.特定のビットパターンを調べたい場合である.例えば,
のような場合である.ここで,
は0でも1でもよく,興味の対象外のビットである.
このようなビットパターンを調べる場合,2つの手順が必要であろう.
- まず興味の対象のビットを取り出す必要がある.興味の対象外のビットは,
0または1に設定する.
- 興味の対象のビットがある特定のビットパターンになっているか,否か比較する.
これを,
ANDと
ORを使って調べる.
まずは,ANDを使う方法である.調べたいデータはGR0に格納されているとする.
;これ以前は省略
AND GR0,A ;マスク
CPL GR0,B ;ビットパターンの比較
;このあたりも省略
A DC #0F0F ;マスク
B DC #0A0C ;定数の定義
同じ様なことが,ブール代数の双対の原理3により,ORを使ってもできる.そのほかにも,いろい
ろな方法が考えられる.
プログラムの構造については,先に説明した.ほとんど同じである.以下について,答え
よ.
- メインルーチンとデータ領域の行番号を答えよ.
- ラベルと命令コード,オペランド,コメント文はどれか?
このプログラムのフローチャートを図
5に示す..
図 5:
教科書のList5-3のプログラムのフローチャート.
|
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
2006-02-08