Makeでエラーが出なければ、実際に動かして確認をします。 HC08スターター・ボードの電源スイッチをオンにして、【Debug】 アイコンをクリックしてください。下図(ほとんどの画像はクリックで拡大できる)のようにデバッガ画面が開いたら、Data ペインを見てください。先ほど用意した 三つの変数 VarA , VarB , VarC がここに表示されています。中身はまだ設定していないので、この時点では意味のない値になっています。この画像の例では VarA が 127 になっています。
Dataペインの VarA のところをマウスで1回だけ左クリックしてみてください。その変数の番地(メモリ内のアドレス)が表示されます。Address: 0x80 と表示されているので $0080 番地ということがわかります。
一方 Memoryペインを見ると、この画像の例では 0080 のところに 7F という数字が見えますね。 $7F というのは 10進数の 127 です。つまり、メモリ上の $0080 番地の値が 127 になっていることを表示しているわけです。 同様にして、その隣と、そのまた隣の VarB , VarC はそれぞれ $0081 番地と $0082 番地で、現在の値はそれぞれ 140 ( $8C ) と 255 ( $FF ) であることが読み取れます。
なお、先ほども説明したように、これらは初期化する前の内容のため、ほかの値になっている可能性が大です。ここで説明した値と異なる値でも異常ではないので、そのまま読み進めてください。
スタート時はマイコンがリセット直後の状態なので、リセット・ベクタの値 $EE00 がプログラム・カウンタ(PC) にコピーされています。それでは、1命令ずつ実行して CPUレジスタとメモリの動きを追って見ていきましょう。 【Single Step】 アイコンを 1回クリックしてください。
それと、もう一つ SR というレジスタが変化していますね。 これはコンディション・コード・レジスタ(CCR) の別名、ステータス・レジスタ の略です。中身のフラグを個別に表示したものがその右側に Status として並べられています。
あと 3回注意深く 【Single Step】 アイコンをクリックして、 MOV #4, VarA を実行したところを下図に示します。 よく見ると、Dataペインの VarA の値が 4 になったことがわかります。
また、同時に Memoryペインの $0080 番地の内容も $04 になっています。どちらも赤い文字で表示され、たった今変化したということを表しています。このように、デバッガを使うと本来は見えないはずの CPUレジスタやメモリの変化が見られる ので、プログラムが正しく動くかどうか確認するのに大変便利です。
もう 1回 【Single Step】 アイコンをクリックして、 MOV #5, VarB を実行したところを下図に示します。 Dataペインの VarB が 5 になり、Memoryペインの $0081 番地の値も $05 になりました。 ここまでで初期設定のための処理が終了 し、この次の命令 LDA VarA から mainLoop の中身になります。
続いて、もう 1回 【Single Step】 アイコンをクリックして LDA VarA を実行したところを下図に示します。 今度は、Registerペインの A つまりアキュムレータの値が 4 に変化しました。
ここで気を付けたいのは、4 という数値をアキュムレータに入れたのではなく、 VarA という変数の内容をアキュムレータに入れたのだということです。
さらにもう 1回 【Single Step】 アイコンをクリックして ADD VarB を実行したところを下図に示します。 A の値に VarB の値を足した結果が A に格納されています。 具体的には、4 + 5 = 9 となっていますね。
Sourceペインと Assemblyペインは次に実行する命令を表しているので STA VarC を行き過ぎてしまったように見えています。 なお、Sourceペインで表示されている feed_watchdog と STA COPCTL は同じものです。
ここまでで第11回の例題(簡単な数の足し算)が実行できました。 さらに 【Single Step】 アイコンを何度かクリックしてみてください。 あとはもう mainLoop を繰り返すだけなので、変数の値は変わりませんね。 Registerペインにある CPUレジスタの内容は変わりますが、Dataペインと Memoryペインの内容は変化しません。
この続きがあるので、そのまま閉じないで次へと進んでください。 次回でひと区切り付きます。
(続く)
『参考文献』
「試しながら学ぶHC08マイコン入門」 (CQ出版)
第10章 統合開発環境CodeWarrior を使ってみる
組み込みエンジニア 川野亮輔
