Let's H8アセンブラ



さてさて、昨日から取り組み始めたH8アセンブラ。まずはH8クロスアセンブラマニュアルとH8/300Hプログラミングマニュアルを読むところからスタート。


H8クロスアセンブラマニュアルでは、H8アセンブラのプログラムの書き方と、アセンブラ制御命令(8086のMASMでいう擬似命令)を理解。とくに .SECTION 命令は重要っぽい。H8アセンブラでは、プログラムは、命令やデータの集まりであるセクションを構成単位とする。そのセクションを宣言するアセンブラ制御命令が .SECTION 命令。(8086のMASMのSEGMENT擬似命令に似てるけど、あのようなハードウェア的概念ではない。)


H8/300Hプログラミングマニュアルでは、H8のレジスタ構成とアドレッシングモードを理解。8086の複雑怪奇なレジスタ構成・アドレッシングモードにくらべ、H8はシンプルで分かりやすい。


レジスタは、コントロールレジスタを除けば、32ビット×8本のレジスタがすべて等価な汎用レジスタ。アドレッシングモードも若干特殊なのがあるけど基本は(1)レジスタ直接、(2)レジスタ間接、(3)即値、(4)絶対アドレス の4種と、分岐用限定の(5)相対アドレス、(6)メモリ間接の2種。 (8086のようなセグメント方式でないので分かりやすい。) 4種のアドレッシングモードを全て使えるのはMOV命令だけで、演算命令はレジスタ直接と即値のみ。 (コテコテのCISCな8086と違って、ちょっとRISCっぽい?)


命令セットは、いっぺんには覚えられないし、どうせよく使う命令は限られてるので、実際にプログラムを読みながら随時覚えていこう。(でも命令の数は8086ほど多くない。)