Yamamoto's Laboratory
 
 
Linux
  設定
  アセンブラ
 
Windows
  設定
 
 
コンピューター H8 アセンブラ (Linux)

H8アセンブラ (Linux)

H8をアセンブラ言語で使います.開発環境は Linux です.

目次


概要

アセンブラ言語の学習は,コンピューターの基本的な仕組みを理解するために良い教材である.それも,市販の便利なアセンブラーを使わないで,不便だが実行ファイル(*.mot)をステップを踏んで作成するGNUのツール(アセンブラやリンカー)を使うと,さらに勉強になる.

基本事項

全体の流れ

その他

  • gccが吐き出すアセンブラのソースを見たければ,次のようにオプション -S を付ける.すると,アセンブラのソースファイル hogehoge.s ができあがる.オプション -mh は,H8/300H用の命令を生成すること指示している.
    $ h8300-hms-gcc -S -mh hogehoge.c

サンプルプログラムの実行

LEDが点滅するだけの単純な回路を動作させるプログラムをサンプルにして,アセンブラプログラムの練習を行う.

  1. アセンブラのソースファイルからオブジェクトファイルを作成する.
    $ h8300-hms-as -o experiment.o experiment.s
    $ h8300-hms-as -o exp_func.o exp_func.s
    $ h8300-hms-as -o 3664crt0.o 3664crt0.S
  2. リンカーを使って,exe ファイルを作成する.この時リンカースクリプトが必要である.
    $ h8300-hms-ld -T h8-3664.x -o experiment.exe 3664crt0.o exp_func.o experiment.o
  3. exe ファイルを,モトローラSフォーマットに変換する.
    $ h8300-hms-objcopy -O srec experiment.exe experiment.mot
  4. モトローラSフォーマットファイル(*.mot)をH8に転送する.
    $ h8write -3664 h8exp.mot /dev/ttyS0

プログラム作成方法

表記 意味
b byte.8ビットのデータ
w word.16ビットのデータ
l long word.32ビットのデータ

gnuと他のアセンブラの違い

世間で出回っているH8の書籍のアセンブラと gnu のアセンブラは少し異なる.以下の表に,その違いをまとめておく.この表は,小林さんのH8 開発メモを参考にした.

ASM38 h8300-hms-as
疑似命令 .CUP H300N .h8300h
ラベル .EQU アドレス .equ ラベル,アドレス
2進数 B'01010101 0b01010101
16進数 H'0000FF80 0x0000ff80

リンカースクリプト

リンカースクリプトの書き方を示す.参考資料に示したWEBページを読んで,自分なりに理解したことを書いているだけである.間違いもある可能性もある.その時はメールで指摘してください.

参考資料

  1. アセンブラの使い方を参考にした.OKAZAKI Atsuya さんのH8 Development Environment
  2. gnuと広く使われているアセンブラの違いがかかれている.小林さんのH8 開発メモ
  3. アセンブラのプログラムがかかれているので,参考になる.H8マイコンで何か作ろう!
  4. iwatamさんのLinuxでH8のフリー開発環境を!.とくに,「章 3 リンカスクリプト」は,リンカスクリプトの理解に役立った.
  5. リンカの使い方およびスクリプトの書き方は,(株)SRA 先端技術研究所さんのWingnutの中にあるGNU リンカ LD の使い方が大変参考になりました.


no counter