大人の科学マガジンVol.24 GMC-4について

このQ&Aのポイント
  • 大人の科学マガジンVol.24 GMC-4についての要約文です。
  • GMC-4のプログラムの中で特定のデータを読み取る方法についての要約文です。
  • GMC-4の命令郡にはデータメモリのリード&ライト命令はあるものの、プログラムメモリ番地の内容を直接読む命令が見当たりません。
回答を見る
  • ベストアンサー

大人の科学マガジンVol.24 GMC-4について

お世話になります。TK-80世代なので懐かしさのあまり、思わず買ってしまいました。 さて、当該雑誌の付録である4ビットマイコンのプログラムについて教えてください。 テキスト(?)の53ページ「タイマー」なのですが、これはサンプルとして内蔵されているソフトですが、これを1から作ろうとチャレンジしているのですが、どうしてもわからないことがあります。 それは、最初にタイマーセットということで00番地から02番地に、最初にデータを入力するというものですが、GMC-4の命令郡にはデータメモリのリード&ライト命令はあるものの、プログラムメモリ番地の内容を直接読む命令が見当たりません。 最初に50~52番地へデータを書き込むのなら話はわかるのですが、一体プログラムはどうなっているのでしょう?

質問者が選んだベストアンサー

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

あぁ、それはですね。 GMC-4は一種の仮想マイコンでして、実際には8ビットのマイコンがGMC-4という仮想マイコンをシミュレートしています。 で、内蔵しているプログラムはGMC-4の仮想マイコンでは無く8ビットマイコンの命令で実行しているのでGMC-4の命令の制約を受けないのです。なので0番地のデータも読めるなど制約は一切ありません。 GMC-4の命令で作る場合は50番地~5F番地までしか参照できませんし、Yレジスタの間接参照のみ許されています。まぁ、その制約の中で作るのがパズルで面白いんですけどね。 私もGMC-4でゲームを作ろうとしてるんですがメモリが足りません。何とか収めようと苦闘中です。勇者の作ったgmc4ccやG4CBASICで最初作ろうとしましたがやはりコンパイラは機械語の効率が・・・。

moonsideup
質問者

お礼

そういうことですか、ありがとうございました。 それこそあの少ないメモリとチープな表示装置でプログラムを完成させると何とも言えない気持ちよさがありますね。

関連するQ&A

  • C++でメモリの絶対番地を指定する方法はありますか。

    C++でメモリの絶対番地を指定する方法はありますか。 あるプログラムでメモリの指定した番地にデータを書き込み、別のプログラムで同じ番地のデータを読み込めるようにしたいと思ってます。プログラムは作ったのですが、絶対番地を指定していないようで、別のプログラム側で同じ番地を指定しても同じデータが読み込めません。

  • 多重処理下のメモリ

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

  • コンピュータアーキテクチャの問題です

    (1)レジスタ、メモリに初期状態が以下表である時 レジスタ GR0 7 GR1 2 番地 データ 100 10 110 8 120 3 5÷3の計算を行うための一連の命令をニーモニック表現で示せ 値はすべて10進数とする。 ただし以下の3条件に従うこと 1.最初の命令をLI1、100とする 2.計算結果は120番地に格納すること 3.最低1回は命令でXRを指定すること。 (2)ハードウェア障害によってGR2とメモリの120番地が使用不能となったものとして、5÷3の計算を行うための一連の命令をニーモニック表現で示せ。 初期状態は(1)の開始時と同様とし、(1)とはことなり最初の命令は制限がない。 計算結果は110番地に格納すること。 という問題ですがわかる人教えてください。よろしくお願いします

  • マイクロコンピュータのプログラムについて

    TK-85にプログラムを入力する実験を先日やったんですけど、そこで直接番地指定と間接番地指定(メモリ番地をHLレジスタで指定する)の2つの方法をしました。この2つの方法の長所と短所をそれぞれ教えて欲しいです。 あとプログラムを短くしたり、実行速度を早くしたりする方法があればぜひ教えて欲しいです。

  • マイコンのCプログラミングで未使用のプログラム領域のアドレスを指定して読み込みできる?

    いまPICマイコンのプログラミングをしています。コンパイラはCSSというものを使っています。 設定した値を読み込んでその値でタイマーを動かそうと思っているのですが、12F509というマイコンはEEPROM領域がないので、なんとかしてこれを実現するにはと思い2kワードのプログラミング領域を半分くらいしか使っていないことに気づいたので、その領域の一番後ろの0x07FF番地に何かしらデータを書いてその番地にアクセスしてそこからタイマーの時間を呼び出そうと思ったのですが、このようなことはできるのでしょうか? C言語だとポインターを使えばよかったと思うのですが、その場合どのように書いたら良いのでしょうか? ご教授よろしくお願い致します。 たぶん、 unsinged char *timer_add; timer_add = (unsigned char *)0x07FF; get_value = timer_add; これでよかったでしょうか?

  • 機械語

    番地機械語ニモニック表記コメント 0 11101000 Shift 8 ;無駄な命令.ただしAccumulatorの内容は0になる 1 10011111 Store 31 ; Accumulator の内容を31 番地へ格納 2 01100001 Load 1 ; 1 番地のデータ(Store 命令) をAccumulator へ 3 01000110 Sub 6 ; 6 番地の内容(= 1) をAccumulator から引く 4 10000001 Store 1 ; 引いた結果を1 番地に格納 5 01100111 Load 7 ; 7 番地の内容(= 0) をAccumulator へ 6 00000001 Jump 1 ; 1 番地にジャンプする 7 00000000 0 ; 0 データの保管場所 このプログラムが停止するのはどんなときですか? これを実行したら3分くらい止まらなかったのですが・・・

  • H8のダウンロードで、拡張しmapファイルでダウンロードすべきバイナリの番地はわかる?

    以前、H8マイコンでプログラムをしていたテスト機があるのですが、そのバイナリファイルは持っているのですが、どこの番地に書き込めば良いのかわからなくなってしまいました。確か0番地に書き込めば良かったと思ったのですが、うまく以後いているのか判断できません。開発は日立のHEW環境で行っています。メモリのどこに関数のポインタなどの情報が入っているmapファイルは持っているのですが、このファイルからbinファイルをどこに書き込めば良いかということはわかるのでしょうか?

  • 大人の科学マガジンについて

    大人の科学マガジンシリーズVol.6に、ヴェートーベン作第九が収録されている、レコードが付録されていると聞いたのですが、本当でしょうか? 本体のレコードは大抵のレコードを再生可能ですか?

  • 大人の科学マガジンのような

    タイトルの大人の科学マガジンのような物をさがしてます。 大人の科学マガジンも作っていて楽しいですし、実用的の物もあっていいのですが、少し作る過程が簡単過ぎてすぐに作り終わってしまいます。 以前、エレキットの真空管アンプのキットを作ったのですが、数日かけて作って夢中になれました。 ジャンルは特に問わないですが、作ってからの達成感と実用的な物を作りたいのですが、こんなのはどうですか?みたいな意見を参考にしたいと思ってます。 プラモデルでいいじゃないか!との声が聞こえてきそうなのですが、当方 塗装に自信がなくまた塗装の場所を確保できません。 プラモデル以外の物でお願いします。

  • LCDに表示するためのフォントデータ

    マイコンでLCDに文字を表示するようなプログラムを作成しています。 現在使用している基板のアドレス0x400000番地から0x480000番地のフラッシュROMの空間に文字コード順に並んだフォントのドットデータが入っているそうで、文字コードを指定して、そのメモリからデータを引き出して、LCDに表示できるようになっています。 このフォントデータは1文字ごとに24バイトのデータとなっていることがわかりました。 なので、21,845文字程度のデータが入っていて表示することが可能のようです。 このようなフォントデータというのはネット上でフリーでダウンロードできるものとかありますでしょうか? またこのような文字のどっとデータをバイナリとしてダウンロードすることが可能なサイトなどご存じでしたら、是非教えて頂きますようお願い致します。 どうぞ、よろしくお願い致します。

専門家に質問してみよう