• ベストアンサー

マイコンのバンク切り替え

bloomers_daisukiの回答

回答No.2

確か、HD64180は、Z80の拡張マイコンだったと思います。 もし違っていたら、私の回答は間違っていますので無視してください。 BANKを切り替えてもPCの値が変化しなければ、アドレスはそのまま続いていきます。 例えば、PC=0x2010の時、BANK切り替えの命令を実行するとPC=0x2012(バンク切り替え命令の命令長が2バイトの場合)となり、BANKが切り替えられます。 したがって、BANK切り替え命令を実行しただけでは、BANKが切り替わり、命令のアドレス(=PCの値)はBANK切り替え命令の次のアドレスになります。 それを避けて、BANK1にBANKを切り替えた時にBANK1の先頭からプログラムを実行したい時には、 1. BANK1にBANK切り替えしたい時に、特定のアドレスにJMPする。 2. そのアドレスでBANK1にBANKを切り替える。 3. BANK1のそのアドレスにJMP 0x0000を書いておく。 と言うことになるでしょうか。このような命令は、プログラムエリア(=ROMエリア)の末尾に書いておけばいいのではないでしょうか。

koma1000nin
質問者

お礼

確かに機種はHD64180です。 bloomers_daisukiさんの方法は、BANK-0とBANK-1の末尾に同じプログラムを置く方法ですね。そうすると、切り替え後に何らかの作業をしてから0000H番地へ飛ぶように仕組んでおけばいいということになりそうですね。 No.1さんへのお礼も参考にして下さい。

関連するQ&A

  • フリーズ、

    どうしてパソコンはフリーズするのでしょうか? 予想としては主記憶装置にプログラムを置けなくなった、 と考えています。CPUのプログラムカウンタがプログラムをとってこいと 命令しすぎって主記憶装置上におけなくなるからだと思います。 あってる??? たしかプログラムカウンタって次に命令するアドレスの番地を おいてあるんだっけ、、、、、 間違ってたら大恥です。 教えてください。

  • アキュムレータに格納される数値は・・・?

    次の問題の解き方をできるだけ詳しく教えてください。 主記憶装置の100番地~104番地の内容は以下のようであるとき、LD/(102)を実行した結果アキュムレータに格納される数値は? LD命令は指定した有効アドレスの内容をアキュムレータに格納するめいれいであり、(X)は間接アドレス指定である。すなわちX番地の内容を 有効アドレスにするという意味である。 103     102    100    101    104 100番地   101番地  102番地  103番地  104番地

  • 多重処理下のメモリ

    一つのメモリ(0番地からMAX番地まで)に複数のプログラムを 置くと、番地はどうなるんですか? 特に、変数の番地やジャンプの命令の飛び先番地が、2つ目以降 のプログラムの場合どうなるんですか? 問題が起きた場合どういった解決方法があるのですか?

  • JUNO-DS DAWからのパフォーマンス切り替え

    下記の内容で質問があります。回答をいただけると助かります。よろしくお願いします! ▼製品名(例:JUNO-DS) 曲の最初に、その曲で使用するパフォーマンスをバンクセレクト+プログラムチェンジやシステムエクスクルーシブデータをDAWからJUNO-DSにMIDIで流し、自動であらかじめ保存してあるパフォーマンスに切り替わるようにする方法を調べています。 パフォーマンスを構成するパッチの切り替えではなく、パフォーマンス自体の切り替えです。 マニュアルもダウンロードしてみましたが、見つけることができませんでした。 マニュアルのどこかにあるはずと思っていますが、マニュアルの記載ページや方法をご存知の方、教えていただけますと幸いです。 ※OKWAVEより補足:「電子楽器メーカーローランド製品、ボス製品」についての質問です。

  • 戻り番地を逃がしておくの意味が分かりません

    いつもお世話になっております。独学で情報処理の勉強をしています。昨日CASLIIをキャスルツーと読むことを知ったぐらいです。「なるべく専門用語を使わないで答えてくださる方」よろしくお願いします。 基本情報午後の選択はCASLIIがいいと思って参考書を読んでみたのですが、とても難しく、ネットで検索していたら理解を深めるための記事みたいのがあったのですが、【主プログラムから副プログラムのデータの受け渡し】ということで以下のことが書かれてます。 LAD  GR1,123     ;GR1に123を格納する(主プログラムの先頭)   PUSH   0,GR1 ;123をスタックに格納する     LAD   GR2,456 ;GR2に456を格納する     PUSH   0,GR2 ;456をスタックに格納する     CALL   SUB1  ;副プログラムSUB1を呼び出す     POP   GR3    ;加算結果をスタックからGR3に取り出す        :   ;これ以降の処理は省略する  SUB1 POP   GR4   ;戻り番地を逃がしておく  ←これ!!    POP   GR1    ;GR1に456を取り出す(副プログラムの先頭)   POP   GR2   ;GR2に123を取り出す     ADDA  GR1,GR2 ;GR1とGR2の加算結果をGR1に格納する      PUSH   0,GR1 ;加算結果をスタックに格納する      PUSH   0,GR4 ;戻り番地を元通りにする  ←ここも!!     RET      ;主プログラムに戻る(副プログラムの末尾) の、戻り番地を逃がしておくが意味がよく分かりません。なので、戻り番地を元通りにするもよく分かりません。 よろしくお願いします。

  • プログラムのあるPC自身の10/100BASEの切り替え

    プログラムのあるPC自身の10/100BASEの切り替えはVisual Basicのプログラムでできるのでしょうか? 「ネットワークとダイアルアップ接続」の「ローカルエリア接続」のプロパティを開くと、Ethernetカードの「構成」ボタンで出てくるネットワークアダプタのダイアログボックスの「詳細設定」タブに、「Media Type」というのがあります。 10/100の切り替えができるネットワークアダプタだと、「AutoScan」や「10BASET」「10BASETX FullDuplex」などが選べます。 これをVBのプログラムからいじる方法をご存知でしたらお教えいただきたく。 ソフト上から可能でも、ネットワークアダプタによっては切り替えできないなど、ハードウェアの制限などについてもお教えいただきたく。 よろしくお願いします。

  • マイコンのメモリマップについて

    マイコンに限った話ではないかとは思いますが、現在マイコンプログラムの勉強をしておりますが、マイコンのデータシートのメモリマップを見ると先頭番地からフラッシュメモリのマッピングがあり、その次に各種レジスタやRAMのマッピングがなされています。 (1)このメモリマップというものは論理アドレスと物理アドレスの対応表のようなものだと解釈しておりますが、この対応表自体はRAMの一部に格納されているのでしょうか? (2)例えばフラッシュメモリの物理アドレスが00~FFまであり、RAMの物理アドレスも00~FFだった場合で且つ フラッシュメモリの後ろにRAMのマップを作る場合、メモリマップの中の論理アドレスは00~2FFまでで物理アドレスはフラッシュメモリの部分は00~FF,RAMのブツリアドレスも00~FFになるという理解で良いですか? ひょっとするとかなり見当違いをしている質問かもしれません。 よろしくお願いします。

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

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

  • 情報処理概論

    今情報処理概論という勉強をしています。教科書をよんでもわからないので2つ質問です。 1.プログラムカウンタと命令レジスタ  例えばプログラムカウンタが”2256040”であるとき、次のフェッチサイクルではこの番地からはじまる命令が命令レジスタに移され移された命令が4バイト命令であれば、プログラムカウンタには4が加えられる。、と教科書に書いてあるのですがチンプンカンプンです。誰かわかりやすいように説明していただけますか? 2.演算装置について  例えば”01001010 11001101”と表記されている命令は、あるコンピュータでは”1010 11001101”にある16ビット符号付整数を演算装置のレジスタ(アキュムレーター)の内容に加え、その結果(和)をアキュムレーターにセットすることを意味する。、と教科書に書いてあります。まったく意味不明なので誰かわかりやすく説明できる人回答お願いします。 ながくなりましてすいません。よろしくお願いします。

  • skype.exe”アプリケーションエラーが出ます”0x0000000

    skype.exe”アプリケーションエラーが出ます”0x00000004の命令を0x00000004のメモリーを参照しました。メモリーが"read”になることができませんでした。 次のプログラムが実行中です。 skypeでのプログラムによりシャットダウンできません。 ちなみにskypeは実行していませんでした。 よろしくお願いします。