四歩目 基本プログラミング
![]()
では前回 プログラミングしましたね
今回はあのプログラミングの解説を何回かにわけてお送りします
注意:ここを読む前に 総合コウザ 進数 を見てください
でないと意味不明になる
〜解説〜
.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 |
これだな で解説してくね
まずH8のアセンブルプログラムには 僕が思うに最低限3つの命令が必要だ
.CPU と .SECTION と .END だ
.CPUは上のプログラミングを見ると .CPU 300HA となっている
これはアセンブラに「このプログラムを使う(実行する)マイコンのCPUは300Hだ」と教えてるのだ
(CPUというのは簡単に言うと マイコンの中にあるプログラムを実行する部分だ(すっごい大事なもの))
で 実行するのは AKI-H8の3048Fだよね これのCPUは300Hだ
だから .CPU 300HA にしてある
それと 300Hには8個(0〜7)の動作モードがあります。H8はモード7(別名アドバンストモード)
で動くようにしてあるので(自由に変えられるよ)
そのしるしとして 300HA (Aはアドバンストモードの頭文字)で設定するのです
.SECTION は上のプログラムでは .SECTION P,CODE,LOCATE=H'FFEF10 となっています
セクション(SECTION)とは この命令から下のプログラムを1つのまとまりの
セクション として セクションの名前や種類やどこにこのプログラムを書きこむかを宣言するものです
上で P というのは僕がつけたセクションの名前です 別にこれは何でもいい
好きな名前をいれればいい(BAKAとか)
次のCODE というのは 「このセクションのプログラムは
プログラムを実行するための命令などが書いてある」 ということです つまりこのセクションの”種類”だ
(他にもいろいろあるが今は知らなくていい)
次のLOCATE=H'FFEF10 は このセクションのプログラムは RAMに書きこむということが書いてあります
LOCATEというのはこのセクションを書きこむ場所(正しくは書きこみ始める場所)
を示すもので 上の場合 H'FFEF10です これはRAMのことです(今は知らなくていい)
.ENDは簡単 プログラムの終わりに書きます
この3つが最低限必要な命令です
〜マイコンの仕組みをちょっと〜
しっつこいけど 進数 見てね
CPUというのが出てきたね これは上に書いたように すっごい大事だ
車で言うとエンジン
CPUはROMやRAMに書きこまれた命令を ROMやRAMから読み出して
その命令を実行するものだ
僕らの使っているAKI-H8 3048FのCPUは300Hというものが搭載されている

それから セクションでプログラムをRAMに書きこむってのがあったよね
LOCATE=H'FF100 っての
よくわかんないよね H'FF100がRAMなんて
さっきCPUがROMやRAMからプログラムを読み出して実行するってのはわかったよね
じゃぁどうやって読み出してると思う?
実はROMやRAMからちょっとずつ読み出して実行していたのだ
そのちょっとずつってのは アセンブルプログラムの1行ずつを読み出していってる
これを見て
※この図の数字は間違っています
これは H8(モード7で)のROM RAMのアドレス
(アドレスというのはCPUからROMやRAMにアクセスするときに使うものです)
緑色の部分がROM(H'0〜H'01FFFF)紫がRAM(H'FFEF10〜H'FFFF0F)
たとえば H8は電源を入れるとH'0(H'000000)あたりから最初に読み出してCPUで実行していきます
何らかの命令がない場合このように順番に読み出していきます
ROMやRAMはちょっとづつ数字で区切られ 区別されていたのです
(ROMが本だったら H'000001 などは 1ページ目 2ページ目 といった感じです)
でRAMの先頭がH'FFEF10ですから LOCATE=H'FF100 とすると
このセクションの命令達はH8にパソコンから書きこまれるとき
H'FF100から順番に書きこまれていくことになるのです
※ちなみにH' という数字はH8のアセンブル言語では「この数字は16進数である」ということです
だからCPUにH'FFEF10 というとRAMの先頭のことであり
H'01FFFFというとROMの最後を意味するのです
〜後書き〜
難しかったね ごめんうまく説明できなくて
| まとめ .CPU・・・プログラムを実行するCPUの種類を宣言するもの .CPU 300HA .SECTION・・・プログラムをセクションとして宣言して いろいろな設定をする .SECTION セクションの名前,セクションの種類,書きこむ(書きこみ始める)アドレス .END・・・プログラムの終わりを示す |