• 締切済み

ワンボードマイコン 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.のプログラムと同じ動作をするプログラム。 よろしければ教えてください!!!

みんなの回答

  • nano_cat
  • ベストアンサー率24% (26/106)
回答No.1

ブザーのON/OFFは、どこかのポートのあるビットをON/OFF すればいいのでしたっけ? 1.2.3.とも、何がわからないの? なんか学校の課題っぽいね。 例えば、1.をするのに、どういう手順を踏めばよいか わかる?フローチャートはここでは書けないので、 文章を箇条書きにして書いてみて。まずはそこから。 それを書かないと教えないよ。

関連するQ&A

  • ワンボードマイコン Z80

    ワンボードマイコンMP-Z80のプログラムを勉強しているのですが、 次の二つの問題がわかりません。 1)8100(H)番地~813F(H)番地に格納されているデータを 8200(H)番地以降にコピーせよ。 2)8100(H)番地から810F(H)番地に格納されているデータを8ビットの 符号付絶対値表現とみなしたとき、各データを2の補数表現に変換し、 8200(H)番地から格納せよ。 1)は LD HL,8100 LD DE,8200 LD A,40H LD BC,A LDI LDIR HALT でいいのでしょうか。2)はまったくわかりません。 お願いします。

  • マイクロプロセッサのZ80について学校で課題がでたのですが、

    マイクロプロセッサのZ80について学校で課題がでたのですが、 5100H番地に50H、5101H番地に10Hをキー入力であらかじめ書き込む。 4200H番地に以下のプログラムを書く。   (1)5100H番地、5101H番地の内容をそれぞれB、Cレジスタに取り込んだ。   (2)AレジスタにBレジスタの内容を転送し、AレジスタとCレジスタを加算し、その結果を5200H番地に格納した。   (3)AレジスタにBレジスタの内容を転送し、AレジスタからCレジスタを減算し、その結果を5201H番地に格納した。   (4)モニタに戻した。  JP  2006H  C30620 アセンブラプログラムーーーーー機械語 (1) LD A , (5100H)ーーーーー 3A0051 LD B , Aーーーーー 47 LD A , (5101H)ーーーーー 3A0151 LD C , A ーーーーー 4F (2)LD A , B ーーーーー 78 ADD A , C ーーーーー 81 LD (5200H) , A ーーーーー 320052 (3)LD A , Bーーーーー 78 SUB A , C ーーーーー 91 LD (5201H) , Aーーーーー 320132 (4)JP 2006H ーーーーー C30620 このプログラムコードの最適化(命令数の削減)を行え。 という課題がでました。どうすればよいかわかりません。どなたかおしえてください。

  • MP-Z80の周辺IC8255

    AB10-EXE上の8255(1)、8255(2)を正常に動作させられるように初期化しました。 LD___A, 90H ____ 3E 90___ : 8255(1) モード 0 OUT__(23H), A____D3 23___:Aポート入力に、B、Cポート出力に初期化 LD___A, 80H_____3E 80___:8255(2) モード 0 OUT___(27H), A____D3 27___:A、B、Cポート出力に初期化 HALT___________76 しかし8255の初期化プログラムの内容はよくわかりませんので知っている方説明でもヒントでもしてください 宜しくお願いします

  • ワンボードマイコンMP-Z80を用いたプログラミング

    今、ワンボードマイコンMP-Z80でプログラミングの勉強をしています。 まだ、基本的なところなんですが、次の問題がわかりません。 1)8100H番地から81FFH番地までの100Hバイト分のRAM領域を0とする プログラムを作成せよ。 2)1から10までの整数の和を求め、8100H番地に格納せよ。 3)8100H番地から810FH番地に格納されているデータを8ビットの符号付 絶対値表現とみなしたとき、各データを2の補数表現に変換し、8200H番地から格納せよ。 この三つの問題なんですが、1)は全部に0を入れるということでしょうか? これらの問題は繰り返し命令の範囲の問題なので、繰り返し命令を 使うそうです。ヒントだけでも教えてください。

  • MP-Z80の問題について

    ワンボードマイコンMP-Z80のプログラムを勉強しているのですが、 次の問題がわかりません。 (1)NHKの時報の様な音を出すプログラムを作成する。但し音の周波数は、440Hzの音が鳴ったり鳴らなかったりを0.5秒間隔で3回繰り返して880Hzで1秒間鳴らすプログラムを作成する。プログラムは8900H番地以降に作成すること。周波数の誤差は+-0.5以下に、時間の誤差は+-1ms以下にすること。 お願いします、だれか教えてください。

  • cプログラム

    /*三角形の面積を求めるプログラム*/ #include<stdio.h> #include<math.h> main() { double a,b,c,menseki; printf("AC間の長さと角度と底辺ABを入力してください\n"); scanf("%f %f %f",&b,&a,&c); menseki=c*b*sin(a*3.1459/180.0)*0.5; printf("面積は%fです\n",menseki); return(0); } 三角形の面積を求めるプログラムなのですが以下のようなエラーが出てきてしまいます 未定義の 最初に参照している シンボル ファイル sin /var/tmp//ccSTvXNz.o ld: 重大なエラー: シンボル参照エラー。kadai9 に書き込まれる出力はありません。 collect2: ld はステータス 1 で終了しました どこを修正すればいいでしょうか?

  • 正しく書けていますか?

    私が書いた(1)から(12)までの文章は、正しく書けているでしょうか?詳しい皆さんのご意見をいただきたいです。どこか誤った部分があれば、教えていただきたいです。 (1)次のプログラムを実行すると、8200H番地に40Hが格納される。 ORG 8000H LD HL,8200H LD A,08H LD B,A ADD A,A ADD A,A ADD A,B LD (HL),A HALT (2)次のプログラムを実行すると、8200H番地に55Hが格納される。 ORG 8000H LD HL,8200H LD A,AAH CPL LD (HL),A HALT (3)HLレジスタで示されるメモリ番地の内容をCレジスタに転送する命令は以下のとおりである。 LD C,HL (4)サインフラグは、ある命令を実行した結果、Aレジスタ等が負であれば1に、正であれば0に設定される。 (5)以下のプログラムを実行すると8A00Hには0AHが格納される。 ORG 8000H LD A,0D LD B,10D LOOP; ADD A,B DJNZ LOOP LD(TOTAL),A JP $ ORG 8A00H TOTAL;DEFB 0 END (6)CP/Mは6800や68000などをCPUにもつマイコンのためのD0Sである。 (7)16BIT算術演算グループではレジスタペアとしてBC,DE,HLがある。 (8)次のプログラムを実行すると、8200H番地にOFHが格納される。 ORG 8000H LD HL,8200H LD A,05H LD B,A SLA A ADD A,B LD (HL),A HALT (9)オペコードとは、命令の操作を表すコードをいう。 (10)以下のプログラムにおいて、8005Hにデータは08Hである。 ORG 8000H TABLD1;DEFB 1 DEFB 2 DEFB 0FEH DEFB4 TABLE2;DEFW 0506H TABLE3;DEFFW 8 END (11)サブルーチン内で演算などにレジスタを使用する場合、あらかじめレジスタ内のデータをPUSH命令などで退避する必要がある。 (12)ソフトウエアー上で無視できる割り込み要求と要求を無視できない割り込み要求を総称してノンマスカブルインタラプト(NMI)という

  • Z80に関しての宿題なのですが、

    Z80に関しての宿題なのですが、 「コール命令を使った電子オルガン」 キーを入力したら対応する音が鳴るようにプログラミングする。(入力を 常に監視し、FFHでなかったらサウンド出力をする。)プログラムは4400H番地から書く。  キー入力:CALL 2018Hと呼ぶとAレジスタに押されたキーの内容が入ってくる。 押されないとFFHが入っている。(いずれかのキーが押されるとAレジスタには00Hから17Hまでの対応する値が格納される。)  サウンド出力:Aレジスタに00Hから17Hを入力してCALL 201BHと呼ぶと対応する音が鳴る。    (1)キー入力を行った.Aレジスタにキーの内容が入る。    (2)AレジスタがFFHの場合は(1)に戻る。そうでないときは(3)へ行く。    (3)Aレジスタの内容により、サウンド出力を行った。    (4)(1)に戻る。      ニーモニック                        CALL , 2018H SUB FFH JP Z , (4400H) ・・・・(ゼロフラグZが1の時、4400番地にジャンプする。) ADD FFH CALL , 201BH JP 4400H ↑のようにすればよいのですが、なぜなのかいまいちわかりません。異なるコードで実装せよ。とのことなので理解したいです。おしえてください。

  • CPU、Z80からステート数から命令時間を求める

    マイコンボードACTーZIIを用いて実験を行ったのですがステート数を用いて命令時間の求め方がわかりません。 CPUはZ-80、クロック周期4MHzを用いて以下のプログラムの実行回数とステート数を求めたのですがあっているのでしょうか? だれか、教えてください。 まちがっていた場合、詳しく説明していただけるとうれしいです。 ラベル ニーモニック  ステート数 実行回数 小計(命令時間) LD A, 0FFH 7 1 7 OUT (00H), A 10 1 10 LD B, 0EH 7 1 7 L1: LD C, 0B1H 7 1 7 L2: DEC C       4 3 12 JP NZ, L2 10 3 30 DEC B       4 3 12 JP NZ, L1 10 10 100 LD A, 00H 4 1 4 OUT (00H), A 10 1 10 LD B, 0EH 4 1 4 L3: LD C, 0B1H 4 1 4 L4: DEC C       4 3 12 JP NZ, L4 10 3 30 DEC B       4 3 12 JP NZ, L3 10 10 100 JP 8000H 10 46 460 合計      119 92 821

  • サーバープログラムの外部からのアクセス

    C言語でプロセス間でメッセージのやりとりを行うごく簡単なプログラムを組みました。LANでの動作は問題無く進みましたが、WAN側からアクセスするためには、ルータに直接続のマシンであれば、マシン側で使用するポートを開けれるだけで、外部からアクセスできるでしょうか。又、ポートの開きかたがよくわかっておりません。 初歩的な事になりもうしわけありませんが、どうかご教授ください。

専門家に質問してみよう