ニックネーム: 居酒屋ガレージ店主
★ZAQのBlogari停止のため、あれこれ「データ吸い出し」対策しています。 新規記事はとりあえず停止。 コメント書き込みはまだ有効です。 (JH3DBO 下間憲行)
2006年06月30日(金)
プログラムテクニック「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/
※ブログ管理者が承認するまで表示されません
コメントを記入  
お名前(必須)
 
パスワード:
 
メール:
 
URL:
 
非公開:  クッキーに保存: 
※非公開にチェックを入れると、管理者のみにコメントが届きます。
ブログの画面には表示されません。
captcha


※画像に表示されている文字を入力してください(半角・大文字/小文字の区別なし)。
文字が読みづらい場合はこちらをクリックしてください。
小文字 太字 斜体 下線 取り消し線 左寄せ 中央揃え 右寄せ テキストカラー リンク