2. プログラム-1


注 意

  プログラムファイルはノートパッド等のテキストエディタから開いて下さい.拡張子は「.src」です.

 用語については後で説明しますが,シンボル,ラベル,オペコード,オペランドの相互間は,必ず1字以上のスペースを挿入します.ただし,ラベル内,オペコード内など各ブロック内では,絶対にスペースを挿入しないで下さい.また, 日本語フォントは使用しないで下さい.よくあるプログラムが動かない原因のひとつです.

 プログラムの;(セミコロン)から右はコメント部分です.コメント部分には日本語を使用してもかまいません.その他の部分は全て半角英数字を使用してください.ラベルのような名前の部分は大文字と小文字を区別しますが,実行命令では区別していません.どちらでも同じですが,エラーの原因になるので, プログラム作成時は半角大文字 を使いましょう.

 今回の授業では, LEDを点灯,消灯するなかで,プログラムの作成法,アセンブル方法,H8に書き込む方法,レジスタについて学習します.

用語(テクニカルターム)について次で説明していきます.

・プログラムに関する言葉の説明

 初めにプログラムを作成していく中でよく使われている用語(テクニカルターム)を紹介します.

 用語 説明

ルーチン あるまとまった機能を持つプログラムのかたまりです.
MAINルーチン メインのルーチンです.プログラムを進めていきたい順にこのルーチンにかいていきます.
サブルーチン メインルーチンやサブルーチンから呼び出しがあったときに実行されるルーチンです.
シンボル プログラムの初めにあらかじめ定義しておく番地やビットを表す記号(名前)です.
ラベル プログラム行の先頭に記述すると,その行の番地の代わりに使用できる記号(名前)です.
ニモニック 命令語です.(オプコード、オペコードとも言います)
オペランド 演算(命令)の対象です.オペランドには処理されるデータの格納先をしめすソースオペランドと結果データの格納先を示すデスティネーションオペランドがあります.
分岐命令 条件による,プログラムの実行をします.
レジスタ 演算結果や途中の状態を一時的に記憶する場所です.
メモリの番地を示します.
;(セミコロン)から右に書かれた文字はコメントでプログラムの説明等を書きます.
スタックポインタ サブルーチンなどから復帰する戻り番地,使用中のレジスタの内容を一時保管したりするための RAM領域を指定するレジスタです.(ER7レジスタとも呼ばれる)

・アセンブリ言語の構成

 アセンブリ言語の構成とそれらの名称は次の図のようになっています.ラベル,ニモニック,オペランドについては用語の説明をしました.シンボル,ラベル,ニモニック,オペランドの相互間は,必ず1字以上のスペースを挿入します.ただし,ラベル内,オペコード内など各ブロック内では,絶対にスペースを挿入しないで下さい.よくあるプログラムが動かない原因のひとつです.;(セミコロン)から右はコメント部分です.コメント部分には日本語を使用してもかまいません.その他の部分は全て半角英数字を使用して下さい.ラベルのような名前の部分は大文字と小文字を区別していますが,実行命令では区別していません.しかし,エラーの原因になる可能性があるので,プログラム作成には半角大文字を使いましょう.

INIT: ADD.B <Eas>,Rd ;TASHIZAN足し算

↑  ↑  ↑  ↑  ↑ ↑
|  |  |  |  | └─コメント(;(セミコロン) の後)
|  |  |  |  └─デスティネーションオペランド(第2オペランド)
|  |  |  └──ソースオペランド(第1オペランド)
|  |  └─サイズ
|  └─ニモニック
└───ラベル オペランドサイズの種類

.L:ロングワード32bit

.W:ワード16bit

.B:バイト8bit

図 2.1 アセンブリ言語の構成

・アセンブラとは?

コンピュータは「 0」と「1」しか理解できません.そこで,人間に分かりやすい言葉でプログラムが出来ないかと考え出された言語の一つがアセンブリ言語です.そして,数あるプログラム言語の中でコンピュータの分かる言葉,マシン語,に一番近い言語がアセンブリ言語です.アセンブリ言語をコンピュータが理解できるマシン語に変換するソフトをアセンブラといいます.

・アセンブラプログラムの最小構成単位

 アセンブラでプログラムを作成するときの最小のプログラムを書くと次のプログラムのようになります.

=====================================================================================

.CPU 300HA ;CPUの指定

.SECTION ROM,CODE,LOCATE=H'000100 ;セクションの宣言

.END

=====================================================================================

このプログラムで使われている文字,命令の説明

.CPU 300HA

H8用アセンブラではプログラムの冒頭で,使うCPUの指定を記述します

.SECTION

セクションの宣言,プログラムの各章の初めに,その章の名称,性格,開始番地などを宣言するよう記述を行います

.END

プログラムの終わりに必ず付けます

プログラムの中で,先頭にドット(.)のついた語は,マイクロコンピュータが実行する命令ではなくアセンブラに対して指示を出しています.この命令をアセンブラ制御命令といいます.

このほかによく使われる指示は次のものがあります.

.EQU

シンボルに値を割り当てます

Ex) P5DR .EQU H'FFFFCA ;H'FFFFCA(ポート5データレジスタ)をP5DRで表す

.BEQU

シンボルに値を割り当てます. EQUとちがうのはbit単位で割り当てを行うところです

Ex) LED1 .BEQU 0,P5DR ;P5DRのbit0をLED1で表す

・ニモニック

 ニモニック( mnemonic)とはアセンブラ言語における命令のことですが、本来は「記憶を助けるもの」の意味で、本来は二進数で表される機械語の命令を人間が扱いやすいように英単語の一部を使って書き表したものです。ここではプログラム中に,よく使われるニモニックを紹介します.

MOV

ソースオペランドの内容をデスティネーションオペランドに書き込みます

Ex) MOV.L #H'FFF10,ER7 ;#H'FFF10をER7に書き込みます

JMP

指定した実行アドレスにジャンプ(無条件分岐)します

Ex) JMP @LEDON ;LEDONラベルへジャンプ

BSET

デスディネーションオペランドの指定された 1bitを「1」にセットします

Ex) LEDON: BSET LED1 ;LED1を「1」にセット



[山口研究室] <back | index | next >