夢追い人

"It takes a dreamer to make a dream come true."―Vincent Willem van Gogh

大人の科学vol.24で遊ぶ。

昨日の投稿でも少し言いましたが、つい先日4ビットマイコンがついた「大人の科学vol.24」を買いました。
仕組みはとても興味深いのですが、とにかくアセンブリ言語でプログラムを考えるのが難しい。
まして、プログラミング言語のひとつも覚えられていない僕にとってそれは至難の業ですから、備忘録もかねて少し4ビットマイコンのコマンドについてまとめてみました。



  • GMC-4アセンブリはやみ表
    • 命令記号/命令コード/実行フラグ・・・詳細 のように見てください
  • KA/0/0,1・・・押された数字キーをArに代入。キーが押されなければ実行フラグ=1、押されれば実行フラグ=0
  • AO/1/1・・・Arの値を数字LEDに点灯。
  • CH/2‐/1・・・ArとBrの値を入れ替え、YrとZrの値を入れ替える。
  • CY/3‐/1・・・ArとYrの値を入れ替える。
  • AM/4/1・・・Arの値をデータメモリ((50+Yrの値)番地)に代入。
  • MA/5/1・・・データメモリの値をArに代入。
  • M+/6/0,1・・・Arとデータメモリの値を足し、桁上がりすれば実行フラグ=1、それ以外は実行フラグ=0
  • M-/7/0,1・・・データメモリの値からArの値を引き、結果をArに代入。値がマイナスなら実行フラグ=1、それ以外なら実行フラグ=0
  • TIA□/8/1・・・Arに□の値を代入。
  • AIA□/9/0,1・・・Arに□の値を足す。桁上がりすれば実行フラグ=1、それ以外は実行フラグ=0
  • TIY□/A/1・・・Yrni□の値を代入。
  • AIY□/B/0,1・・・Yrに□の値を足す。桁上がりすれば実行フラグ=1、それ以外は実行フラグ=0
  • CIA□/C/0,1・・・Arと□の値が同じなら実行フラグ=0、一致しなければ実行フラグ=1
  • CIY□/D/0,1・・・Yrと□の値が同じなら実行フラグ=0、一致しなければ実行フラグ=1
  • JUNP□□/F/1・・・実行フラグ=1なら□□番地にジャンプ、実行フラグ=0なら素通りし実行フラグ=1になる。
    • ここからサブルーチン(複数の命令をまとめたもの)です。
  • CAL RSTO/E0/1・・・数字LEDの消灯。
  • CAL SETR/E1/1・・・2進LEDの一箇所を点灯させ、そのビット番号をYrに代入。
  • CAL RSTR/E2/1・・・2進LEDの一箇所を消灯させ、そのビット番号をYrに代入。
  • CAL CMPL/E4/1・・・Arをビット反転(値の0と1を反転させる)する。
  • CAL CHNG/E5/1・・・Ar,Br,Yr,Zr,の値と、A'r,B'r,Y'r,Z'r(←補助レジスタ)の値をそれぞれ入れ替える。
  • CAL SIFT/E6/0,1・・・Arの値を1ビット右シフトする。元の値が偶数なら実行フラグ=1、奇数なら実行フラグ=0
  • CAL ENDS/E7/1・・・エンド音を鳴らす。
  • CAL ERRS/E8/1・・・エラー音を鳴らす。
  • CAL SHTS/E9/1・・・短い音を鳴らす。
  • CAL LONS/EA/1・・・長い音を鳴らす。
  • CAL SUND/EB/1・・・Arで指定した音階を鳴らす。
  • CAL TIMR/EC/1・・・{(Arの値+1)×0.1}秒だけ処理を待つ。
  • CAL DSPR/ED/1・・・データメモリの値を2進LEDに点灯し5F番地に上位3ビット、5E番地に下位4ビットの点灯データを格納する。
  • CAL DEM-/EE/1・・・データメモリの値からArの値を引き、結果を10進数に変換してメモリに格納。桁下がりしたならば一つ前のデータメモリに1を格納し、最後にYrの値が1つ引かれる。
  • CAL DEM+/EF/1・・・データメモリの値にArの値を足し、結果を10進数に変換してメモリに格納。桁上がりしたならば一つ前のデータメモリを1加算し、最後にYrの値が1つ引かれる。
以上です。本当は表にしたかったのですが、htmlを入力すると{罫線が表示されない。認証エラーがでる。}などの不具合があったのでこうさせてもらいました。
    一応、省略記号の解説
    1. Ar・・・Aレジスタ(6F)
    2. Br・・・Bレジスタ(6C)
    3. Yr・・・Yレジスタ(6E)
    4. Zr・・・Zレジスタ(6D)
    5. A'r・・・A'レジスタ(69)
    6. B'r・・・B'レジスタ(67)
    7. Y'r・・・Y'レジスタ(68)
    8. Z'r・・・Z'レジスタ(66)
    9. □・・・0~Fまでの値が入る。
    こんな感じ。
    ここでコマンドと詳細だけ覚えたけど、ハンドアセンブルするのがめんどくさい。と、言う人は学研が公式公開している「GMC-4アセンブラ」をご利用下さい。
    具体的なプログラミングを学びたいのなら、ここからGMC-4とほぼ同じ型の学研FXマイコンのマニュアルをダウンロードしてください。