- 締切済み
アセンブリでのプログラム
Z80CPUのポケコン(確かSHARP PC-G850V) でアセンブリ言語のプログラムを作成しています。ポートに接続されている基盤のスイッチの値によって、その基盤のLEDの点滅時間を変更するプログラムの課題が出たのですが、まったく分かりません。 できればプログラムそのものを書いてもらえれば嬉しいのですが、流れ図だけでも結構です。 よろしくお願いします。 ポートに接続されている基盤は、LED(4つ)、ブザー、スイッチ(4つ)などといったごく一般的な物です。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- zwi
- ベストアンサー率56% (730/1282)
お話からすると、ほぼフローとしては完成していると思います。 たぶん、問題なのはスイッチの値からLEDの表示パターンを得る方法ですが、テーブル参照が簡単かなと思いますので方法だけ。 4つのLEDパターンをDBでテーブル定義します。 PATTERN: DB 00000001B DB 00000011B DB 00000111B DB 00001111B このテーブルを、スイッチの値とアドレスPATTERNを加算して参照します。
- zwi
- ベストアンサー率56% (730/1282)
>スイッチの値より >出力パターンを求める >↓ >LED点灯 ここの部分は、サブルーチンですよね。 フローに書くならサブルーチン呼び出しの書き方で書いてください。 >ブレークキー入力 >Z=1→yes LOOPに戻る ここが謎ですね。ポケコン本体のスイッチでしょうか? 仕様の説明になかったので、明確にお願いします。 入力まで待つ処理があるのか、単にチェックして押されてなかったらループを続けるのか? スイッチと点灯パターンの変化のタイミングが仕様として提示されていないので、これ以上は難しいです。つまり、押した状態を記憶する必要があるのか、現状のスイッチの状態を表示すれば良いのかによって話はだいぶ変わってきます。 例えば、スイッチが押しボタンなのか、トグルスイッチなのかどちらでしょう? そもそも、スイッチは2ビットしか見ていませんが、4つのスイッチだと4ビット必要だと思います。それとも2つのスイッチを使って2進法で4つの状態を表示させているだけでしょうか?
補足
何度もご回答ありがとうございます。 LED点灯サブルーチン< あ、すいません…。LED点灯部はサブルーチンですね。 謎< そのポケコンのブレークキーを押すとZフラグが変化してプログラム自体が終了するとういうことです。ですのでチェックして押されていなかったらループを続けるということです。 スイッチと点灯パターン< 現状のスイッチを表示すればいいプログラムです。スイッチの種類はトグルスイッチです。上下させるので。 スイッチは2ビット< あ、そちらは2進で4つの状態を表示させているだけです。 素人で本当に申し訳ないです。 何度もすいません・・・。
- zwi
- ベストアンサー率56% (730/1282)
ここでは、課題の丸投げは削除対象になります。かならず出来た所までを書き込んでください。 プログラムでなくてもフローでも、文章でもかまいません。
補足
ご回答と助言ありがとうございます。 というよりも問題が違っていました…すいません。 スイッチの値によってLEDの出力パターンを変更するプログラムです。 一応、メインルーチンの流れ図なのですが、 はじめ ↓ 入出力ポート設定 ↓ LOOP:スイッチ入力 ↓ AND 03H ↓ スイッチの値より 出力パターンを求める ↓ LED点灯 ↓ ブレークキー入力 ↓ Z=1→yes LOOPに戻る ↓no 終わり 出力パターン: A=00H→yesなら○○○●のように点灯 jp リターン ↓no A=01H→yesなら○○●●のように点灯 jp リターン ↓no A=02H→yesなら○●●●のように点灯 jp リターン ↓no A=03H→●●●●のように点灯 ↓ リターン この流れ図ですがまったく合ってる気がしません。ここまでが私の分かる限界なのでどなたでもいいのでよろしくお願いします。 無知で本当に申し訳ないです。
お礼
ご回答ありがとうございます。 完成していると聞いて安心しました。 LED点灯パターンのDB定義の方法もありがとうございます。 何度もありがとうございました。また質問するかもしれませんが、よろしくお願いします。