
三歩目 さぁプログラミングだ
![]()
皆さんご苦労様でした さぁこれからアセンブル言語(プログラム)をはじめよう!
オヤブンから一言・・・アセンブル言語をやる前に HSPをある程度やってプログラムになれることを
おすすめします(その方がわかりやすい)
〜プログラムについて〜
さて 実際に H8の動きを決めるプログラムを書いてみましょう
といっても急には無理な話なので 僕が用意したこのプログラムを H8に書きこんでみましょう
.CPU 300HA .SECTION P,CODE,LOCATE=H'FF000 MOV.B #H'FF,R0L MOV.B R0L,@H'FFFFC8 LOOP: MOV.B #H'FF,R0L MOV.B R0L,@H'FFFFCA BRA LOOP .END |
↑右クリックして「対象をファイルに保存」を押して保存
これをみながらメモ帳で書いて保存するか これをコピーするか サンプルプログラムをダウンロードするか
お好きな方法でどうぞ とりあえず手に入れてください
で手に入れたら ファイル名は ledout.src とか そんなのにしてください
これでプログラムは完了です
あとは これをH8に書きこめる形式(absとかmot)にして H8のRAMに転送して実行しましょう
そのためには アセンブル というのが必要です
アセンブルをしてくれる アセンブラは
ソフトを保存しよう
でCDから保存した Asmフォルダの中にある
A38h.exe です

上の赤で囲んであるのが アセンブラというそふとで プログラムをH8に書きこめるファイルに変換してくれます
そして このAsmフォルダに さっきのledout.srcを保存しておいて
アセンブラに プログラム(ledout.src)を マウスでドラッグ&ドロップ
(ファイルの上でマウスの左クリックを押しっぱなしにして そのままマウスを A38h.exeまで移動させて その上でクリックを離す)

すると 問題さえなければ ledout.obj というファイルが新しく出てくると思います
これで
プログラムはアセンブルされました
次にさらに リンカというソフトでリンクをします
これで ledout.objを HtermでRAMに送れる
ledout.absにすることができます
ledout.objを 上の青色で囲ってある L38h.exe にドラッグ&ドロップしてください
すると ledout.absができるはずです
(ちなみに ledout.mot を作るためには
ledout.abs を C38h.exe に送れば 作れます)
さぁこれでプログラムを H8に送って実行することができます
早速Htermでledout.absを転送してみてください。 きっとLEDが2つともつくと思います
これでプログラムの書きこみ方はわかりましたね
プログラムを書いて .srcで保存して アセンブルしてリンクして転送
〜アセンブルって何してるの?〜
プログラムは MOV.B #FF,R0L などと書いているわけですが このままでは使えません
プログラムとは 実は 1001010101 のように 1か0の機械語 と言うもので
これが ROMかRAMに保存されてH8で実行されるのです
だから プログラムは 1001010101100010110 のように 1と0で書かないといけないのですが
・・・・とてもじゃないけどやっとれないなぁ
そこで MOV.B #FF,R0L などと 文字で書いて それを
10010101101 のように 変換すれば便利です それがアセンブルです

アメリカの人は英語しか分からないので 日本語の本とかをアメリカの人に読んでもらうには
英語に直さなきゃいけない ような感じで
H8には10011011010と書きこまないといけないので プログラム(MOV.B とか)をH8に書きこんで実行するには
プログラムを 100010110などに直さなきゃいけない これがアセンブルです
アセンブラは MOV.B #FF,R0L などと書いてある プログラムを
「ふむふむ MOV.B #FF,R0L は 10110100101で」 のようにして H8に書きこめるように変換してくれるのです
リンクは アセンブルの仕上げだと思ってください
アセンブラのおかげで 100110110 のようにH8で実行できる わかりずらいプログラムをしなくとも
MOV.B #FF,R0L と文字で書いて 変換さえすればH8に書きこめるわけです
なんとも便利だ〜
次回は 今日やったプログラムの解説をします
| まとめ〜 ・プログラムをH8に書きこめるようにする作業は・・・ ・アセンブルとは MOV.B #FF,R0Lなどのプログラムを 10100101011のような |
更新前の文章
〜便利なツール〜
H8のアセンブル言語では 作ったプログラムをそのままH8に書きこんでも実行してくれません
人間には MOV.B などの命令はわかっても コンピューターはわかりません すべてが
電気が流れているか流れてないか つまり 1か0かです でも 101101110111・・・・と
プログラムしても 人間には読みにくいでしょ?
だから MOV・・・・・ などと書いたプログラムを 1011001・・・・・ などという機械語に変換
してしまえばいいのです それを アセンブラーというソフトがやってくれます
(アセンブラーはアセンブル言語という言語でかかれたプログラムしか変換できません)
そしてアセンブラーで機械語にすることを アセンブル といいます
そして アセンブルしたファイルを リンクや コンバート という作業を通して
やっとH8に書き込める motファイルができます
でも面倒だよね いや すっごい面倒だ 三回も ファイルを変換するなんて・・・・・
だから 僕の作った 「AKI-H8アセンブルエディター」を
使うといいです これは・・・・・・まぁダウンロードすればわかる
AKI-H8 アセンブルエディター
ダウンロードしました? それでこれから プログラムを書いて アセンブルからコンバート
まで一気にしてしまいましょう
ソフトを使わない方へのA&L&C方法・・・
プログラム(メモ帳で)を書いて 保存して それの拡張子をsrcにして(名前の変更で拡張子をかえる)
A38h.exe でさっき書いたプログラムをアセンブルして
(ドラッグ&ドロップ(マウスでファイルをクリックして
クリックしたままA38h.exeの上に持っていきそこでクリックを放す)する)
すると obj になる んで L38h.exeで abs に C38h.exeで motにする
〜意味不明でも書いてみよう〜
↓は コピーして貼り付けても アセンブルできません
.CPU 300HA .SECTION P,CODE,LOCATE=H'FF000 MOV.B #H'FF,R0L MOV.B R0L,@H'FFFFC8 LOOP: MOV.B #H'FF,R0L MOV.B R0L,@H'FFFFCA BRA LOOP .END |
↑右クリックして「対象をファイルに保存」を押して保存
これを サンプルプログラムからダウンロードして
AKI-H8アセンブルエディター(これからエディターと呼ぶ)で開いてください
(ちなみにH8のアセンブル言語のプログラムファイルの拡張子はsrcだよ)
で エディターの アセンブル&リンク&コンバート(今度からA&L&Cと呼ぶ)ボタンを押してください
すると自動的にプログラム(srcファイル)がアセンブルからコンバートまでされて、
motファイルが作られます (失敗したら どこかにミスがあるよ)
それをHtermで 前みたいにRAMに書きこんで 実行してください
きっとLEDが2つともつくと思います
〜後書き〜
どうでした? ちんぷんかんぷんだったと思います
今回はプログラムの解説はしませんが
大体どんな風にプログラムを書いて どんな風に motファイルにするかわかったでしょ?
アセンブル言語で書いたプログラム(srcファイル)それを
アセンブル→リンク→コンバート すると motファイルになる
(srcという拡張子をエディターに関連付けすると ダブルクリックだけで開けるので便利)