大人の科学マガジンVol.24 GMC-4について
- 大人の科学マガジンVol.24 GMC-4についての要約文です。
- GMC-4のプログラムの中で特定のデータを読み取る方法についての要約文です。
- GMC-4の命令郡にはデータメモリのリード&ライト命令はあるものの、プログラムメモリ番地の内容を直接読む命令が見当たりません。
- ベストアンサー
大人の科学マガジンVol.24 GMC-4について
お世話になります。TK-80世代なので懐かしさのあまり、思わず買ってしまいました。 さて、当該雑誌の付録である4ビットマイコンのプログラムについて教えてください。 テキスト(?)の53ページ「タイマー」なのですが、これはサンプルとして内蔵されているソフトですが、これを1から作ろうとチャレンジしているのですが、どうしてもわからないことがあります。 それは、最初にタイマーセットということで00番地から02番地に、最初にデータを入力するというものですが、GMC-4の命令郡にはデータメモリのリード&ライト命令はあるものの、プログラムメモリ番地の内容を直接読む命令が見当たりません。 最初に50~52番地へデータを書き込むのなら話はわかるのですが、一体プログラムはどうなっているのでしょう?
- moonsideup
- お礼率70% (168/238)
- その他(プログラミング・開発)
- 回答数1
- ありがとう数2
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
あぁ、それはですね。 GMC-4は一種の仮想マイコンでして、実際には8ビットのマイコンがGMC-4という仮想マイコンをシミュレートしています。 で、内蔵しているプログラムはGMC-4の仮想マイコンでは無く8ビットマイコンの命令で実行しているのでGMC-4の命令の制約を受けないのです。なので0番地のデータも読めるなど制約は一切ありません。 GMC-4の命令で作る場合は50番地~5F番地までしか参照できませんし、Yレジスタの間接参照のみ許されています。まぁ、その制約の中で作るのがパズルで面白いんですけどね。 私もGMC-4でゲームを作ろうとしてるんですがメモリが足りません。何とか収めようと苦闘中です。勇者の作ったgmc4ccやG4CBASICで最初作ろうとしましたがやはりコンパイラは機械語の効率が・・・。
関連するQ&A
- C++でメモリの絶対番地を指定する方法はありますか。
C++でメモリの絶対番地を指定する方法はありますか。 あるプログラムでメモリの指定した番地にデータを書き込み、別のプログラムで同じ番地のデータを読み込めるようにしたいと思ってます。プログラムは作ったのですが、絶対番地を指定していないようで、別のプログラム側で同じ番地を指定しても同じデータが読み込めません。
- ベストアンサー
- C・C++・C#
- コンピュータアーキテクチャの問題です
(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; これでよかったでしょうか?
- ベストアンサー
- C・C++・C#
- 機械語
番地機械語ニモニック表記コメント 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文字程度のデータが入っていて表示することが可能のようです。 このようなフォントデータというのはネット上でフリーでダウンロードできるものとかありますでしょうか? またこのような文字のどっとデータをバイナリとしてダウンロードすることが可能なサイトなどご存じでしたら、是非教えて頂きますようお願い致します。 どうぞ、よろしくお願い致します。
- ベストアンサー
- その他([技術者向] コンピューター)
お礼
そういうことですか、ありがとうございました。 それこそあの少ないメモリとチープな表示装置でプログラムを完成させると何とも言えない気持ちよさがありますね。