• 締切済み

アセンブリでのプログラム

Z80CPUのポケコン(確かSHARP PC-G850V) でアセンブリ言語のプログラムを作成しています。ポートに接続されている基盤のスイッチの値によって、その基盤のLEDの点滅時間を変更するプログラムの課題が出たのですが、まったく分かりません。 できればプログラムそのものを書いてもらえれば嬉しいのですが、流れ図だけでも結構です。 よろしくお願いします。 ポートに接続されている基盤は、LED(4つ)、ブザー、スイッチ(4つ)などといったごく一般的な物です。

みんなの回答

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.3

お話からすると、ほぼフローとしては完成していると思います。 たぶん、問題なのはスイッチの値からLEDの表示パターンを得る方法ですが、テーブル参照が簡単かなと思いますので方法だけ。 4つのLEDパターンをDBでテーブル定義します。 PATTERN: DB 00000001B DB 00000011B DB 00000111B DB 00001111B このテーブルを、スイッチの値とアドレスPATTERNを加算して参照します。

mitsuya33
質問者

お礼

ご回答ありがとうございます。 完成していると聞いて安心しました。 LED点灯パターンのDB定義の方法もありがとうございます。 何度もありがとうございました。また質問するかもしれませんが、よろしくお願いします。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

>スイッチの値より >出力パターンを求める >↓ >LED点灯 ここの部分は、サブルーチンですよね。 フローに書くならサブルーチン呼び出しの書き方で書いてください。 >ブレークキー入力 >Z=1→yes LOOPに戻る ここが謎ですね。ポケコン本体のスイッチでしょうか? 仕様の説明になかったので、明確にお願いします。 入力まで待つ処理があるのか、単にチェックして押されてなかったらループを続けるのか? スイッチと点灯パターンの変化のタイミングが仕様として提示されていないので、これ以上は難しいです。つまり、押した状態を記憶する必要があるのか、現状のスイッチの状態を表示すれば良いのかによって話はだいぶ変わってきます。 例えば、スイッチが押しボタンなのか、トグルスイッチなのかどちらでしょう? そもそも、スイッチは2ビットしか見ていませんが、4つのスイッチだと4ビット必要だと思います。それとも2つのスイッチを使って2進法で4つの状態を表示させているだけでしょうか?

mitsuya33
質問者

補足

何度もご回答ありがとうございます。 LED点灯サブルーチン< あ、すいません…。LED点灯部はサブルーチンですね。 謎< そのポケコンのブレークキーを押すとZフラグが変化してプログラム自体が終了するとういうことです。ですのでチェックして押されていなかったらループを続けるということです。 スイッチと点灯パターン< 現状のスイッチを表示すればいいプログラムです。スイッチの種類はトグルスイッチです。上下させるので。 スイッチは2ビット< あ、そちらは2進で4つの状態を表示させているだけです。 素人で本当に申し訳ないです。 何度もすいません・・・。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

ここでは、課題の丸投げは削除対象になります。かならず出来た所までを書き込んでください。 プログラムでなくてもフローでも、文章でもかまいません。

mitsuya33
質問者

補足

ご回答と助言ありがとうございます。 というよりも問題が違っていました…すいません。 スイッチの値によって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→●●●●のように点灯 ↓ リターン この流れ図ですがまったく合ってる気がしません。ここまでが私の分かる限界なのでどなたでもいいのでよろしくお願いします。 無知で本当に申し訳ないです。

関連するQ&A

  • ポケコン(Z-1GR)でのアセンブリ言語の記述方法について。

    ポケコン(Z-1GR)でのアセンブリ言語の記述方法について。 いつもお世話になっております。 小生、只今Z-1GRというポケコンを使用し、x86のアセンブリ言語を習得しようとしています。 そこで、先輩方に質問なのですが、私のもっている3種類のポケコンでアセンブリ言語を入力する際、必ず先に使用するメモリの量を指定しなければいけません。 かといって、私の今のスキルでは、どのくらいのプログラムの量になるかはわかりませんので、最初に指定するメモリの量もわかりません。 先輩方はこのような時、まず、紙などにプログラムを書き、それでメモリの量などを計算していらしたのでしょうか? それとも、最初から各ニーモニックを機械語に変換した際のバイト数を把握した上でメモリ量を指定されていたのでしょうか? 私はまだまだ、ニーモニックから機械語に変換するスキルを持っていないので、先に紙に書き、書いたニーモニックを機械語に自分で翻訳し、プログラムのバイト量を計算しようと思っています。 この方法以外にも、ポケコンでアセンブリ言語をプログラムする際の便利な考え方があればご教示願います。 お忙しい中申し訳ございませんが、先輩方ご教示宜しくお願い致します。

  • アセンブリ言語プログラムの課題

    先日アセンブリ言語プログラムについての課題が出て、プログラムコードを書くことはできたのですが、「考察」の欄で詰まっています。 ここの過去の質問(http://oshiete1.goo.ne.jp/qa3089577.html)も見てみたのですがよく分かりません。 どのようなことを書けばいいのでしょうか? 「高級言語と違う点」とかでしょうか・・・。

  • CASIOのポケコンZ-1GRのアセンブリプログラミングについて教えて

    CASIOのポケコンZ-1GRのアセンブリプログラミングについて教えてください。 いつもお世話になっております。 小生、5月6日にとあるオークションでCASIOのポケコンZ-1GRを落札しました。 しかし、落札した商品には取り扱い説明書が付いていません。。。 ネットでも調べたのですが、Z-1GRのアセンブリによるプログラムの手順等が書かれてある、サイトもないです。。。 そこで、皆様に簡単な順序で全然構わないので、起動した画面から、AXレジスタに値1を格納する手順をお教え願いないでしょうか? お忙しい中、申し訳ございませんが、ご教示宜しくお願い致します。

  • disPICの質問

    トランジスタ技術2007年8月号という本に載っているdsPICプロ グラムに精通している人がいたら次のプログラム仕様のC言語ソ ースを教えてください。 仕様 1,プログラムの内容  スイッチの操作により、LEDの光度をかえる 2,ハードウェア  PIC基盤実験基盤を搭載したユニバーサル基盤を仕様  ・緑LEDはポートRB0 ・赤LEDはポートRB1 ・黒スイッチはポートRB8 ・白スイッチはポートRB9 に、接続されている。 3,プログラム製作の考え方  LEDを電源周波数と同じ毎秒50回点滅させ、ON/OFFの比率(デ ューティー比)を変化させることで、見かけ上の明るさを変化さ せる。 4,プログラム設計の詳細  赤LED のON/OFFのデューティー比を10:0~0:10まで10段階に変 化させる。点滅サイクルは約50回/秒とする  プログラム論理の最後でwaitルーチンをcallすることで、約 20ms毎にタスクが動くようにする。  プログラムスタート時のデューティ比を5:5とする。  黒スイッチ1回押すと、1段階減光させる。  白スイッチ1回押すと、1段階明るくする。 いずれも、デューティ比が0:10か10:0になったらそれ以上スイ ッチが押されても無視する。  緑LEDはデバック用に使用する。  これはwaitループをcallするたび、カウントアップし15回毎に on/offを反転させる。おおよそ300ms毎に点滅するのでプログラムが暴走していないか確かめられる。

  • Z80のリレー動作プログラミング

    課題でプログラムの作成がでたのですが、その内容がZ80を使ってチャタリング防止回路についているLEDの点滅をスイッチを使って左から順に点滅していくのを確認していき、その点滅を「スイッチを1回押すと逆に進み、もう1回押すと元の方向に戻る(リレー)」という動作をするプログラムに書き換えるというものですがはっきりいってわけがわかりません。 この事について詳しく載っている、もしくは参考になるプログラムが載っているサイトなどがあれば教えてもらえると助かります。 ※すいません、簡潔に書いたつもりですが意味がわからなかったなどあれば指摘をお願いします。

  • LEDをタイマー機能を使って点滅させるプログラムです

    LEDをタイマー機能を使用し、点滅させるプログラムなのですが、 if(input(PIN_b0)){output_c(0b00001111);} delay_ms(20); {output_c(0b11110000);} : : と続ずいていくのですが、もっと点滅速度を速くするには どうすればよいのでしょうか? また、例えばスイッチ1が押されたら、そこのLEDだけを 繰り返し連続で点滅させるには、どのような感じで記述すればよいのでしょうか? 例えばでいいので、普通のC言語だったらどのように記述するのか 教えてください。

  • PIC LEDの点滅プログラム

    現在C言語でLEDの点滅プログラムを作成しているのですが なかなかうまくいきません。 LEDの点滅プログラムのソースなど公開しているサイトがありましたら教えてください。 参考にしてプログラムを考えていきたいと思っています。 基本的、シンプルな点滅プログラムを希望します。 PIC16F84Aを使用することを前提に考えています。 よろしくお願いいたします。

  • ワンボードマイコン Z-80のプログラム教えて!

    ワンボードマイコン Z-80のプログラムでわからないプログラムが3つあるので、教えて欲しいんです。 最初は  ORG 0C000H LD  SP、0C100H 最後は RST 38H END と入力するみたいです。 1.テンキーの0を押すとブザーが鳴り、1を押すとブザーが止まる。さらに2を押すとPC-8801のマシン語モニターに戻るというプログラム。 ただし、キーの入力ポートはすべて00Hであり、1を押すとFDHが2を押すとFBHがポートに出力される。またマシン語モニタに戻るにはRST 38H(38H番地へリターン)とすればよい。 2.テンキーの0を押すたびに、ブザーが鳴ったり、止まったりするプログラム。 3.テンキーの0を9回押すとブザーが鳴り、後は1.のプログラムと同じ動作をするプログラム。 よろしければ教えてください!!!

  • PICで前の状態を保持する方法

    PICでRGBのLEDを用いて何パターンかの光り方を作りスイッチを押すと違う光り方になるようなプログラムをアセンブリ言語で作りたいのですが、その際、PICの電源を落として、もう一度付けた時に消す前の光り方を保持するようにしたいのですが、どうすれば良いでしょうか?

  • スイッチを押したタイミングによって止める位置を指定するプログラム

    8つのLEDが高速で順々に点灯していてスイッチを押すと徐々に速度を落としていき やがて1つのLEDに止まり点滅するプログラムを作成いないといけないのですが、 スイッチを押したタイミングによって止める位置を指定する方法がわかりません。 よかったら教えてください<(_ _)>