LoginSignup
0
0

More than 1 year has passed since last update.

【GMC-4】体操カウント

Posted at

学研の4ビットマイコン GMC-4 で、
「1、2、3、4、5、6、7、8、2、2、3、4、5、6、7、8、3、2、3、4、5、6、7、8、…」
のようなカウントをしてみた。

プログラム

以下のプログラムは、MikeAssembler でアセンブルできる。

target gmc4

	TIA 1
	AO
outer_loop:
	CH
	TIA 1
inner_loop:
	CY
	TIA 2
	CAL SHTS
	CAL TIMR
	CY
	AIA 1 + 0x10 - 9
	JUMP inner_loop_end
	AIA -(0x10 - 9)
	AO
	JUMP inner_loop
inner_loop_end:
	CH
	AIA 1
	AO
	JUMP outer_loop

以下は、このプログラムの機械語表現である。

  | 0 1 2 3  4 5 6 7  8 9 A B  C D E F
--+-----------------------------------
0 | 8 1 1 2  8 1 3 8  2 E 9 E  C 3 9 8
1 | F 1 9 9  9 1 F 0  6 2 9 1  1 F 0 3

解説

outer_loop: の直後の CH 命令で、各8個のかたまりの最初の数字をBレジスタに退避する。
inner_loop: の最初は、かたまりごとに増えていくカウントが AO 命令により表示された状態で回る。
カウントとして短い音を鳴らして時間を置いた後、以下の処理を行う。

  1. かたまり内のカウントに1を加え、同時に0x10 - 9 を加えてカウントが9(以上)になったかをチェックする。
  2. カウントが9(以上)の場合、inner_loop を抜ける。
  3. チェック用に加えた 0x10 - 9 を引き、相殺する。
  4. 新しいカウントを AO 命令により表示する。

inner_loop から抜けた後 (inner_loop_end:) は、退避していたかたまりの最初の数字を CH 命令でAレジスタに戻し、さらに1を加えて AO 命令により表示する。

実行結果

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0