小型ロボットを用いたCASL 学習システムの開発

小型ロボットを用いた CASL 学習システムの開発
Using a Small Robot to Develop Learning System for CASL Assembly Language.
片岡 照貴
高山 文雄
Terutaka Kataoka
Fumio Takayama
いわき明星大学 大学院 理工学研究科
いわき明星大学 理工学部
Graduate course of Science and Engineering,
College of Science and Engineering,Iwaki
Iwaki Meisei University
Meisei University
学生にコンピュータの動作原理やアセンブラ言語を学習させるのに基本情報処理試験用の CASLⅡアセンブラ
言語を用いることを考える。PIC16F84A(以降 PIC と略)というワンチップマイクロプロセッサを搭載した小型
ロボットを CASLⅡで作ったプログラムで動かすことができれば、より理解しやすいのではないかと考え、CASL
Ⅱアセンブリプログラムをインテル Hex 形式の機械語に変換する CASLⅡ学習システムの開発し、それを利用し
て CASLⅡを学ぶための教材を作成した。このシステムを用いることで、CASLⅡを興味を持って学べることが評
価できた。
1. はじめに
いわき明星大学ではコンピュータの動作の仕組みや
アセンブラ言語を学ぶ講義があり、そこでは CASLⅡ2)
という基本情報処理試験に使われているアセンブラ言
語を用いている(以下 CASL という)。しかし、その講義
を受講する学生の多くは、コンピュータがなぜ動くの
かということを容易に理解できない。そこで本研究は、
学生が自分で作ったCASLプログラムで動く小型ロボッ
トを見て興味を持って学習できれば理解しやすいので
はないかと考え、CASL プログラムをインテル Hex に変
換する CASL 学習システムを開発し1)、これを用いるこ
図 2-1 CASL プログラミング開発環境 DCASL
とで学生が小型ロボットを制御しながらCASLプログラ
ミングを理解しやすい教材を作るのが目的である。小 2.2 ワクチン君とは
型ロボットには、PIC3)を搭載しているワクチン君1)
という株式会社3D のものを用いた。
株式会社 3D の開発した小型ロボット2)で、PIC とい
うマイクロプロセッサを搭載している。移動用の車輪
を持ち、正面に障害物を検知する赤外線センサ、底に
2. CASL と小型ロボットワクチン君について
3)
2.1 CASL とは
白黒を判別できる 4 つの光センサがある。
マイクロプロセッサ PIC4)は Microchip Technology
現在、基本情報処理技術者試験で使われている。仮 が開発した、8 ビットの値を扱え、命令は 14 ビットで
想マシン COMETⅡを動かすためのアセンブラ言語であ ある。命令数は演算や分岐など 35 種類のほか、数種類
る。演算で扱える値は 16 ビットで、命令数は 35 種類、 の疑似命令がある。データメモリとして汎用レジスタ
多目的に扱える汎用レジスタや、アドレスを表す指標 や特殊レジスタがある(図 2-2)。
レジスタ、値を格納する主記憶がある。
CASL プログラミング開発環境として図 2-1 の DCASL
というものがある。DCASL を起動すると、プログラムを
入力する入力フォームと、処理によって変化するレジ
スタやフラグビットがある。
図 2-2 小型ロボットワクチン君
マイクロチップ PIC には図 2-3 の Microchip
Technology が無償で提供している MPLAB IDE というプ
ログラミング開発環境がある。MPLAB IDE を用いること
で、PIC マイコンを制御するプログラムの開発や PIC
マイコンへのインテル Hex 形式機械語の書き込みが可
能となる。
図 2-5 RS232C 接続の PIC ライター
3. CASL 学習システムの仕様と実現
CASL 学習システムはトランスレータ部とアセンブル
部から成り立っている。
3.1 トランスレータ部の仕様
図 2-3 PIC プログラム開発環境 MPLAB IDE
図 3-1 は開発したトランスレータ部の仕様をユース
ケース図で表したものである。トランスレータを用い
PIC プログラム開発環境ではないが、PIC にインテル ることで CASLⅡプログラムを PIC アセンブリプログラ
Hex 形式の機械語を書き込むことができる図 2-4 の ムに変換していることを示す。変換された PIC アセン
IC-Prog というフリーウェアがある。図 2-5 の RS-232C ブリプログラムは図 2-3 の MPLAB IDE などでインテル
接続の PIC ライターを用いることで、
PIC プログラム開 Hex 形式の機械語に変換する必要がある。
トランスレー
発環境などで生成したインテル Hex 形式の機械語を タは Java2 を用いて開発されている。
PIC マイコンに書き込むことが可能となる。
インテル Hex 形式の機械語とは PIC プログラム開発
環境で PIC プログラムをアセンブル後生成される、マ
イコンを制御することが可能な機械語ファイルのこと
である。インテル Hex 形式機械語のレコードは必ず、
コロン・データ長・オフセットアドレス・レコードタ
図 3-1 ユースケース記述のトランスレータの動作
イプ・データレコード・チェックサムで構成されてい
3.2 アセンブルシステム部の仕様
る。
図 3-2 は開発したアセンブルシステム部の仕様をユ
ースケース図で表したものである。アセンブルシステ
ムを用いることで、図 3-1 のトランスレータで生成さ
れた PIC アセンブリプログラムからインテル Hex 形式
の機械語を生成していることを示す。生成されたイン
テル Hex 形式の機械語は PIC ライターを用いることで
PIC に書き込むことが可能となる。
アセンブルシステム
もトランスレータ同様、
Java を用いて開発されている。
図 2-4 PIC に機械語を書き込む IC-Prog
図 3-2 ユースケース記述のアセンブルシステムの動作
3.3 変換パターンファイルの作成
表 3-1 は作成した変換パターンファイルの一部であ
る。トランスレータを用いて、CASL プログラムから PIC
プログラムに変換する際、読み込んだ CASL プログラム
ファイルの命令と、表 3-1 の変換パターンファイルの
CASL 命令を比較し、一致すれば変換パターンファイル
の PIC 命令を出力する。読み込む変換パターンファイ
ルの構成は、ファイル内の偶数レコードに CASL 命令が
書かれており、奇数レコードに PIC 命令が書かれてい
る。書かれている命令は、表 3-1 のように 1 対 2 や 4
対 3、5 対 1 など、複数の命令パターンがある。1つの 図 3-3 CASL の汎用レジスタ(GR0∼GR7)と PIC の特殊レ
レコードの中に複数の命令がある場合、トランスレー ジスタの対応
タは決められた改行文字列を見ることでレコードパタ
ーンを改行し、その改行したレコードを一つ一つ比較 3.5 処理の流れ
図 3-4 はトランスレータ部の処理の流れを表してい
するようになっている。
る。流れは表 3-1 の変換パターンファイルや CASL プロ
グラムファイル、出力する PIC アセンブリプログラム
ファイル名を読み込んだ後、CASL プログラム内の命令
やラベルと、変換パターンファイルの文字列などを比
較し、
PIC アセンブリのファイルとして出力するもので
ある。出力された PIC アセンブリプログラムは、図 3-5
のアセンブルシステム部で読み込まれ、まずラベルと
プログラムアドレスの対応表を作り、その後、命令を
機械語にラベルをプログラムアドレスに変換する。デ
表 3-1 作成した変換パターンファイルの一部
ータ長やチェックサムなどのインテル Hex 形式の機械
語ファイル内に書き込む値を算出し、ファイルに書き
3.4 汎用レジスタ(CASL)と特殊レジスタ(PIC)
込む処理までを 2 パスで行い、インテル Hex 形式の機
1)
図 3-3 は CASL の汎用レジスタ にワクチン君を動作 械語ファイルを出力する。出力された機械語ファイル
させる上で必要な PIC の特殊レジスタ2)を割振ったも は、
フリーのPICライティングソフトウェアを用いて、
のである。
PICにはバンクというものがあり、
バンク0、 PIC に書き込む。
バンク 1 にそれぞれ 8 ビットのレジスタがある。PIC
のレジスタは 8 ビットのため、CASLⅡの 16 ビットのレ
ジスタを上位 8 ビットと下位 8 ビットに分け PIC のバ
ンク 0 のレジスタを上位 8 ビットに、バンク 1 のレジ
スタを下位 8 ビットに割振った。
例えば PIC のバンク 0
に PORTA という入出力レジスタがあるが、これはワク
チン君の車輪を動かすレジスタである。この PORTA を
CASLⅡの汎用レジスタ GR6 の上位 8 ビットに割振った
ことで GR6 の上位 8 ビットに前進させる値をプログラ
ムで入れれば、ワクチン君を前進させることができる。
図 3-4 トランスレータ部の処理(アクティビティ図)
図 3-5 アセンブルシステム部の処理(アクティビティ 図 4-3 生成されたインテル Hex 形式機械語ファイル
図)
5. 教材の作成と評価
4.ワクチン君に出力した結果
本研究で開発したCASL学習システムは演習教材とし
図4-1 はワクチン君を前進させるCASL プログラムで て用いられることが目的である。
したがって、
この CASL
ある。Q1_1 内で車輪を動かす初期設定をし、MAIN を繰 学習システムで CASL プログラムを学ぶため、表 5-1 の
り返すことでワクチン君が前進する。CASL プログラム 教材を作成した。教材の構成は 3∼11 題ある問題を 6
(図 4-1)を変換し、生成された PIC プログラム(図 4-2) 種類作成した。問題は、どのようなことを学ぶことが
を見ると、CASL プログラムが変換されたものであるこ できるか、使用する命令、ワクチン君の動作を考慮し、
とが分かる。生成された PIC プログラムをアセンブル 作成した。例えば Question1 ならば、LD 命令や AND 命
した結果、図 4-3 の機械語ファイルを生成した。その 令などを用いて、レジスタに値を入れたり、ビットを
機械語ファイルを PIC ライターで PIC に書き込み、ワ クリアしたりする。ワクチン君の動作は、前進させる
クチン君を動作させた結果、思い通りに動作できた。 か、後退させるか、その場で回転させるかのいずれか
のみとなる。
表 5-1 作成した教材
図 4-1 ワクチン君を前進させる CASL プログラム
今回作成した教材は、本来は講義の中で評価したい
と考えていたが、時間の関係上、それが出来なかった
ため、表 5-2 の 4 人の学生に使ってもらった。評価は、
以下のⅰ)∼ⅳ)の流れで行った。
ⅰ)説明用教材(図 5-1, 図 5-2)を用いて、約 10 分間
講義をする
ⅱ)Question1 の穴埋め問題(図 5-3)を学生にやっても
らう
ⅲ)コンピュータでプログラミング、機械語の生成
図 4-2 CASL を変換して作られた PIC プログラム
ⅳ)ワクチン君動作確認後、学生から感想を聞く
表 5-2 検証に協力してくれた学生
以下ⅰ)∼ⅲ)の感想を聞くことができた。
ⅰ)ワクチン君の動作原理を理解できたかという問い
に対し、車輪がビットに対応していることが分かった
ⅱ)プログラムでロボットを動かすことに興味を持っ
たかという問いに対し、自分のプログラムでロボット
を動かせると聞いて興味を持てた
ⅲ)システムを使っていて、気になったところはある
かという問いに対し、変換の手順が多くて面倒なので、
一体化したほうがいい
学生の利用の感想から分かるように、本システムは
CASL を学習するには有効であることが評価できた。し
かしながら、何もかかれていない白紙に1からプログ
ラムを書かせるためには、より良い教材を作成する必
要がある。
6.まとめ
本研究で開発した CASL 学習システムを用いることで、
図 5-1 ワクチン君の車輪とレジスタの関係説明資料
PIC のワクチン君を動作させることができた。
また学生
に使ってもらった結果、小型ロボットを作成した CASL
プログラムで動かすことが可能なため、興味を持って
CASL を学習できることが確認できた。
今後の課題として、システム操作を簡易化し、CASL
プログラムの分かりやすい構文エラーの出力や、より
良い教材の開発をする必要がある。また、PIC に書き込
む前に、作成した CASL プログラムで小型ロボットワク
チン君がどのように動くのか確認できるシミュレータ
を開発することも考えたい。
謝辞
本論分の執筆にあたり、CASL 学習システム開発にお
図 5-2 前進させるプログラムの説明資料
いて、貴重なご意見を頂きました、いわき明星大学 情
報科学教育研究センター 馬目高伸氏、安斎孝幸氏に感
謝致します。
参考文献
1)片岡、高山:日本教育工学会, 第 20 回全国大会講
演論文集, 685-686
2)株式会社 3D,
http://www.3dweb.co.jp/howVAC/page2.html
3)田幸樹,山本芳人,広瀬啓雄(2001),アセンブラ
言語 CASLⅡ,工学図書株式会社,東京都
4)Microchip Technology Inc.(2001), PIC16F84A
図 5-3 検証に使用した穴埋め問題
Data Sheet,U.S.A,: 6-10,35-42