プログラムテクニック「DAA」
アセンブラでのプログラムテクニックに関するメモを置いておきます。
BinデータをBCDにしたりその逆変換など、アセンブラでプログラムを組むときは、データ変換ルーチンを作らなければなりません。
Cならあれこれ用意された関数が使えますが、アセンブラではみんな自己責任。
そうですね、とりあえずマイコンはZ80としておきましょう。
次の4行のコード
ADD 90H
DAA
ADC 40H
DAA
これは何をするルーチンか?
アキュムレータ(Aレジスタ)に入った4ビットのBinデータ「0〜9,A〜F」(0x00〜0x0F)をASCII文字の「'0'〜'9'〜'A'〜'F'」に変換できるのです。
HEXデータを文字コードにして液晶に表示したりシリアル出力したりする場面で使えます。
普通ならテーブルを使って変換するか、9とAを境に条件判断してASCII文字に変換するところでしょう。
この4行のプログラムを見つけたのは、CP/M-80をごそごそしていたとき。
1979年か1980年です。
CP/Mのシステムやツールを逆アセンブルしていて発見しました。
何をしているのだろうと、思って、処理を追いかけてみると「おぉぉっ!」です。
この巧妙さに感激!
以来、10進補正命令「DAA」が使えるマイコンで活用しております。
このルーチン、DAA命令がどんな動きをするのか、良い教材になると思います。
「DAA命令」でググるとあれこれ出てきますね。
|
2006年6月30日 12時41分
|
記事へ |
コメント(0) |
トラックバック(0) |
|
・電子回路工作 |
トラックバックURL:http://blog.zaq.ne.jp/igarage/trackback/448/
※ブログ管理者が承認するまで表示されません