« NO.8付録で試す-78K0/KB2マイコンで7セグメントLEDに表示する温度計 | メイン | -No.8付録で試す。マイコン回路- その1定番 HCS08マイコンにLCDモジュールをつなぐ(5) »

HC08マイコンの使い方QY4A編 -
《14》 HC08マイコンのCPUレジスタ(3)

 Makeでエラーが出なければ、実際に動かして確認をします。 HC08スターター・ボードの電源スイッチをオンにして、【Debug】 アイコンをクリックしてください。下図(ほとんどの画像はクリックで拡大できる)のようにデバッガ画面が開いたら、Data ペインを見てください。先ほど用意した 三つの変数 VarA , VarB , VarC がここに表示されています。中身はまだ設定していないので、この時点では意味のない値になっています。この画像の例では VarA が 127 になっています。
 

qy4a_test02-06a.gif

 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回クリックしてください。
 

qy4a_test02-07a.gif  最初の命令が実行されました。下図のように、変化があったレジスタやメモリは赤く表示 されます。LDHX #opr は 3バイト命令なので、PC が 3増えています。 この命令は H:X レジスタに即値を入れる命令なので、H:X レジスタの内容が更新されています。
 それと、もう一つ SR というレジスタが変化していますね。 これはコンディション・コード・レジスタ(CCR) の別名、ステータス・レジスタ の略です。中身のフラグを個別に表示したものがその右側に Status として並べられています。
 

qy4a_test02-08.gif

 あと 3回注意深く 【Single Step】 アイコンをクリックして、 MOV #4, VarA を実行したところを下図に示します。 よく見ると、Dataペインの VarA の値が 4 になったことがわかります。
 また、同時に Memoryペインの $0080 番地の内容も $04 になっています。どちらも赤い文字で表示され、たった今変化したということを表しています。このように、デバッガを使うと本来は見えないはずの CPUレジスタやメモリの変化が見られる ので、プログラムが正しく動くかどうか確認するのに大変便利です。
 

qy4a_test02-09.gif

 もう 1回 【Single Step】 アイコンをクリックして、 MOV #5, VarB を実行したところを下図に示します。 Dataペインの VarB が 5 になり、Memoryペインの $0081 番地の値も $05 になりました。 ここまでで初期設定のための処理が終了 し、この次の命令 LDA VarA から mainLoop の中身になります。
 

qy4a_test02-10.gif

 続いて、もう 1回 【Single Step】 アイコンをクリックして LDA VarA を実行したところを下図に示します。 今度は、Registerペインの A つまりアキュムレータの値が 4 に変化しました。
 

qy4a_test02-11.gif
 ここで気を付けたいのは、4 という数値をアキュムレータに入れたのではなく、 VarA という変数の内容をアキュムレータに入れたのだということです。

 さらにもう 1回 【Single Step】 アイコンをクリックして ADD VarB を実行したところを下図に示します。 A の値に VarB の値を足した結果が A に格納されています。 具体的には、4 + 5 = 9 となっていますね。
 

qy4a_test02-12.gif ここでもう 1回 【Single Step】 アイコンをクリックして、 STA VarC を実行したところを下図に示します。 これはアキュムレータの内容を指定した場所へ格納する命令なので、Dataペインの VarC が 9 に変わりました。同時に Memoryペインの $0082 番地の値が $09 に変わっています。
   qy4a_test02-13.gif
 Sourceペインと Assemblyペインは次に実行する命令を表しているので STA VarC を行き過ぎてしまったように見えています。 なお、Sourceペインで表示されている feed_watchdog と STA COPCTL は同じものです。

 ここまでで第11回の例題(簡単な数の足し算)が実行できました。 さらに 【Single Step】 アイコンを何度かクリックしてみてください。 あとはもう mainLoop を繰り返すだけなので、変数の値は変わりませんね。 Registerペインにある CPUレジスタの内容は変わりますが、Dataペインと Memoryペインの内容は変化しません。

 この続きがあるので、そのまま閉じないで次へと進んでください。 次回でひと区切り付きます。

(続く)

 『参考文献』
「試しながら学ぶHC08マイコン入門」 (CQ出版)
第10章 統合開発環境CodeWarrior を使ってみる

組み込みエンジニア 川野亮輔

カテゴリ:

トラックバック

このエントリーのトラックバックURL:
http://www.eleki-jack.com/mt/mt-tb.cgi/2098

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

最近のエントリ

このブログのフィードを取得
[フィードとは]
会社案内
情報セキュリティおよび個人情報の取り扱いについて

コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。
コメントはそれぞれ投稿した人のものです。

Powered by
Movable Type 4.1