デジタルちんぶろぐ

デジタルな話題

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  268  : 記事  0  : コメント  4419  : トラックバック  79

ニュース


技術以外は
ちんぶろぐ

記事カテゴリ

書庫

日記カテゴリ

大人の科学マガジン 4bitマイコン付買った の続き

裏の命令表見ながら1秒ごとに7Seg LEDで1->2->3...とカウントするプログラムを作ってみました

Adr

命令

コード

コメント

0 8 1 TIA 1 Aレジスタに1を入れる
2 1 AO Aレジスタの内容をLEDへ出力
3 3 CY AレジスタとYレジスタを入れ替え
4 8 A TIA 10 Aレジスタに10を入れる
6 EC CAL TIMR Aレジスタにで指定した時間ウェイト(0.1×10=1秒)
8 3 CY AレジスタとYレジスタを入れ替え
9 9 1 AIA 1 Aレジスタの内容を+1(インクリメント)
B 3 CY AレジスタとYレジスタを入れ替え
C 3 CY AレジスタとYレジスタを入れ替え
D F 02 JUMP 02 2番地へ戻る

B,C番地でAとYのスワップを2度行っているのはAレジスタの値を保持しつつ実行フラグを立てるためです。

JUMP命令は実行フラグが立っていないと分岐できないためこのようなことをしました。

もっといいやり方があるんでしょうが命令表見ながらパコパコ打っただけなんで^^;

アセンブラというか機械語の教材として結構いいんじゃないかな?と思いました。

投稿日時 : 2009年7月3日 0:39

コメント

# re: プログラム組んでみた ~大人の科学マイコン2~ 2009/07/03 8:53 読者
[2]以前にYの初期値に10を入れておく
#出来るかどうか判らないけれど…

>JUMP命令は実行フラグが立っていないと分岐できない・・・
え゛・・・無条件JUMPするのにそんなフラグが必要なのですか?
4bitだから、仕方ない?

>アセンブラというか機械語の教材として結構いいんじゃないかな?と思いました。
Z80ならもう少しマシなニーモニックになるのになぁ。。


# re: プログラム組んでみた ~大人の科学マイコン2~ 2009/07/03 10:05 あんどちん
>> 読者さん
> え゛・・・無条件JUMPするのにそんなフラグが必要なのですか?
無条件じゃないです。JUMPは実行フラグが立っていたら分岐、そうでなければ次の命令となるようです。
AIA命令の結果桁上がりの有無で実行フラグが変化してしまうので上記の様にしました。CYは必ず実行フラグが立つので。
JUMPも実行フラグが立つのでJUMPを2回書いてもいいんですがそうするとプログラムサイズの肥大化に繋がるので^^
このエントリ書いてから思ったんですが、3でインクリメントしておけばCY1回で済みますね。なんかちょっとしたパズルみたいです。

> Z80ならもう少しマシなニーモニックになるのになぁ。。
でもZ80だと7seg-LED点けるのにポートディレクション設定して数値に対応した出力データ設定してってやらなきゃなんないですよね?
機能限定&ハード固有な感じがプンプンしますがこの機械語は機能が少ない代わりに理解しやすいですしとっつきやすいです。
# 記事をチョロっと読んで実際命令表見ただけで数分で上記プログラムは作れましたし



# re: プログラム組んでみた ~大人の科学マイコン2~ 2009/07/04 21:51 刈歩 菜良 CTP
わたくしもGetしましたー!
触れるのはいつのことやらですが...

# re: プログラム組んでみた ~大人の科学マイコン2~ 2009/07/04 23:11 あんどちん
>> かるぼさん
「鉄は熱いうちに打て」って言いますよね。
早く触らないと押入れの肥やしになりますよw

Post Feedback

タイトル
名前
Url:
コメント: