PICマイコンへの道 〜その8 アセンブラプログラミング〜

                              2010年3月21日 by ごきち

 

 

◆アセンブラにチャレンジ

 回転式のLED表示機が完成した。

 位置を検出して文字が流れることなくしっかり見える。

 

 ここまでの過程でほぼマシン語も扱えるようになった。

 しかし、積み残しの課題が2つ。

 

 一つは間接アドレシングを使ったプログラムを作ること。

 もう一つはアセンブラ。

 

 折角なので回転式表示機に長文を表示させるべく流しながら表示させるプログラムを考える。

 表示バッファの読み出しや、流す為のデータシフトに間接アドレシングが丁度よさそう。

 これをアセンブラで書いてみることで良い勉強になるだろう。

 早速チャレンジした。

 

◆とりあえず同じ物を

 まずは回転表示機のプログラム<TEST6>をアセンブラで書いてみる。

 そしてHEX変換してみて感触を掴むことにした。

 

 適当につらつらーと真似て書いてみて、MPASMWIN で一発目の変換を実行する。

 

 LSTを覗いてみるとエラーの嵐。(笑

 

 まず、MOVF や DECFSZ などの記述でディスティネーション指定の「0」、「1」を忘れる。

 MOVWF でなければならない所を MOVF としてしまい、これまた ディスティネーション指定を忘れる。

 大半がこのエラーだった。

 

 致命的なエラーだとHEXファイルは生成すらしてくれない。

 何度か修正を重ねてようやく翻訳してくれるようになる。

 

 他に、バンク切り替えの所もエラーらしきメッセージがあったが、エラーでも変換はしてくれる様子。

 5、6回訂正を繰り返してマシン語になったHEXファイルを見ると、ほぼハンドアセンブルのそれと同じになった。

 

◆流れる電光掲示板

 一度雛形が出来ると後は比較的楽。プログラム修正もスゲー楽だわ。

 相変わらず MOV命令の使い分けで記述ミスはあるもののデバッグも比較的楽にできた。

 アセンブラだと表示データの追加変更もチョチョイっと仕上がる。

 もっと早く覚えとくんだわ。

 

 ・・・中略

 

 

 完成。

 

 これだけ長いアセンブラプログラムが、マシン語になると一気に圧縮される。

 

 一行目に新たな疑問が湧くが、とりあえず動いたのでパス。

 

◆完成

 早速動画で。

 test7_.mp4

 素晴らしい。使えそうだわ(笑

 

◆あとがき

 PICライターキット、チップ、書籍等あわせて1万円強の出費。

 最初は、「高いおもちゃに手を出してしまったか?」とも思えたが、なんのなんの。

 マシン語に拘ったりと、少々遠回りはしたものの私なりに理解が深まった。

 

 PICライターを購入して2週間。短期集中でそこそこ遊べるようになった。

 特にアセンブラの習得は自分でも天晴れ!まだまだ脳みそは退化していないわ。(笑

 

 仕事にも使っちゃろぅ!デモンストレーションパネルや、展示物の制御にも応用できそう。

 そろそろ16F84Aだけでなく他のシリーズにもチャレンジするかな。

 

 HPネタとしては、その1から書き始めて8部作の大作になった。

 もう一度読み返しておかしな所をこっそり修正するかな。(笑

 

 

 

                                                    おわり

 PICマイコンその7に戻る