H8アセンブラ (Linux)
H8をアセンブラ言語で使います.開発環境は Linux です.
目次
概要
アセンブラ言語の学習は,コンピューターの基本的な仕組みを理解するために良い教材である.それも,市販の便利なアセンブラーを使わないで,不便だが実行ファイル(*.mot)をステップを踏んで作成するGNUのツール(アセンブラやリンカー)を使うと,さらに勉強になる.
基本事項
全体の流れ
その他
サンプルプログラムの実行
LEDが点滅するだけの単純な回路を動作させるプログラムをサンプルにして,アセンブラプログラムの練習を行う.
- アセンブラのソースファイルからオブジェクトファイルを作成する.
$ 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
- リンカーを使って,exe ファイルを作成する.この時リンカースクリプトが必要である.
$ h8300-hms-ld -T h8-3664.x -o experiment.exe 3664crt0.o exp_func.o experiment.o
- exe ファイルを,モトローラSフォーマットに変換する.
$ h8300-hms-objcopy -O srec experiment.exe experiment.mot
- モトローラ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ページを読んで,自分なりに理解したことを書いているだけである.間違いもある可能性もある.その時はメールで指摘してください.
参考資料
|