さて、先日から夢中になっている4ビットマイコンだが、早速プログラムを作ってみた。
これを作るのに使わせてもらったのが、本誌にも載っている、今回の4ビットマイコン専用のアセンブラ、Gakken GMC-4 Assembler。
ここで書くリストは、これでアセンブルしたもの。
プログラムについて
これは「2進数当てプログラム」2進LEDのうち右4つがランダムに点灯するので、この2進数に対応したキーを押すというもの。
例えば「○○○●○●○」は2進で10なので、16進の「A」を押せば正解の音、それ以外を押せばエラー音が鳴る。
終わりはなく、問題が出てキーを押す動作だけが続く。
(追記)
このプログラムをmixiコミュで紹介した所、タイトルを付けてなかったので、
「2進数→Binary、16進数→Hexadecimalの頭文字をとって『BHクイズ』というのは?」
と言っていただきました。
という事で、タイトルも「BHクイズ」と修正しました。
00:A TIY
01:F <F>
02:8 TIA
03:0 <0>
04:4 AM
05:A TIY
06:E <E>
07:2 CH
08:A TIY
09:E <E>
0A:4 AM
0B:E CAL
0C:D _DSPR
0D:2 CH
0E:9 AIA
0F:1 <1>
10:0 KA
11:F JUMP
12:0 <0>
13:D <D>
14:7 M-
15:C CIA
16:0 <0>
17:F JUMP
18:1 <1>
19:F <F>
1A:E CAL
1B:9 _SHTS
1C:F JUMP
1D:0 <0>
1E:7 <7>
1F:E CAL
20:8 _ERRS
21:F JUMP
22:0 <0>
23:7 <7>
TIY F
TIA 0
AM ;アドレス5Fに0を入れる
TIY E ;YrにEを入れる
START:CH ;メインループ。Brの乱数をArに入れる
TIY E ;Yr,Zr両方にEを入れる処理
AM ;アドレス5Eに乱数を入れる
CAL DSPR ;数値を2進LEDに表示
KEY:CH
AIA 1 ;キーが押されるまでAr,Brに数字が加算
KA ;キー入力
JUMP KEY ;押された時点でArにキー入力値、Brに乱数
M- ;アドレス5Eの値とArを引く
CIA 0 ;その値が0か?
JUMP NOT
CAL SHTS ;正しければ、正解音
JUMP START ;最初に戻る
NOT:CAL ERRS ;違っていれば、エラー音
JUMP START ;最初に戻る
プログラム解説
乱数を出す方法が、「キー入力を待つ間、ひたすら数値を加算」。でもYrに入れたらキー入力の後で判定などに使えない、さあどうする、と考えたあげく思い付いたのが「ArとBr両方にひたすら加算する」という方法。
メインループにYrにEの代入があるのは、YrとZr両方にEを入れるため。本当は最初に1回入れたらいいけど、CHを1個減らすため、ループに入れたという。
これにより、キーを押した瞬間、次の数値が入っている。
Ar:キー入力値
Br:乱数
Yr:E
Zr:E
何か、スゲー姑息な事やってるw
これから
最初はゲームを作りたいと思って書き始めたプログラムだけど、このままではゲームではない。
「10回中何回正解したかカウントして点数として表示」にすれば、とりあえずゲームにはなるけど、そのためにはたぶん作り直し。
まずはその辺の改良をやってみると思うけど、さあ私の頭でどこまでできるか。
(追記)
実はこれ、朝にアップしてからバグが見つかって、すでに3〜4回ほど修正している。でもまだ納得してないし、またバグが見つかるかもしれないので、その都度修正する予定。
2009年07月03日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/122697397
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック
http://blog.seesaa.jp/tb/122697397
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック



