No.1
- 回答日時:
> このベクタテーブルって何ですか? またどのような働きがあるのですか?
割り込み処理を一括管理するために設けられているテーブルです。
割込み要因とその要因に対する割り込み処理ルーチンのスタートアドレスがペアで格納されています。
割込みが起こるとベクターテーブル経由で、該当の割り込み処理ルーチンへ飛びます。こうするとそれぞれの割り込み処理ルーチンの大きさや配置場所が自由になります。(ベクターテーブルの書き換えだけで済む)
> またベクターテーブルはプログラマーが組むものなんですか?
プログラマーは関知しません。システム管理者的な人が、どの割り込み処理プログラムをどのプログラム要因に結び付けるかを指定します。割り込み処理プログラムの実装段階という事です。
有難う御座います。大変期待していた回答をもらえた気がします。
しかし、ベクターテーブルの存在は分りましたが、その場合プログラムは
CPUで変わってくるはずです。今Z80CPUで電気回路を作っています。
システムは簡単なものです。しかしなにぶん初心者なので単純にメモリマップを作ったのですが、0000H番地にはROMがいるはずです。
Z80での場合はベクターテーブルはどうなるのですか?
No.2
- 回答日時:
何か他の質問と関連があるようですが、どれかわかりませんので、
ここの範囲で・・・。
CPUレベルの話だと思いますが。
ベクタテーブルは、CPUによって決まったアドレスにあることもあり,また先頭アドレス等を設定できることもあります。
その場合でも,例えばリセット信号による割り込みは
ベクタ固定だったり、テーブルアドレスが固定であったりします。
ymmasayanさんは割り込み要因も含むとありますが、
私が知っているCPUではアドレスのみで、割り込み要因がテーブルのインデックスになっています。
まあ、この辺はCPUによって異なる部分ですので、
いろいろあるのでしょう。
また、ベクタテーブルは、例えばWindowsであれば、
OSやドライバ辺りで使うものですから,
一般のプログラマなら使わないとも言えますし,
そういうソフトが設定する以上、プログラマが
設定するものとも言えます。
また、組込機器のようなシステムでは、そのレベルから
プログラムとして組むことも珍しくはありません。
当然,プログラマがハードウェア割り込みに対応したプログラムを書くことになります。
有難う御座います。なかなか難しい質問になってしまったようです。
メモリマップを作ってみたんです。そしたらROMが0000H番地になったのです。
しかしソフトを勉強してみるとベクターテーブルが0000H番地にあります。
何故ソフトになると勝手にそんなものが出てくるのか不審に思いました。
それでベクターテーブルに疑問をもったわけです。
Z80のマイコンの電気回路を作成しました。その時にメモリマップが自動的に出来てしまったのです。
しかしソフトから見るとベクターテーブルがあるので何故なんだ?どうなるんだ?
と思ったわけです。
No.3ベストアンサー
- 回答日時:
Z80ですね。
懐かしいです。> 0000H番地にはROMがいるはずです。
ROMがいて構わないのです。ROMの中に割りこみ処理ルーチンのアドレス(あるいは割りこみ処理プログラム)を焼きこんでしまうのです。割りこみルーチンで使うワークはRAMに取ればいいので一向に構いません。
0000H番地を使う理由は「電源ON」時にパワーオンリセットで0000H番地に飛ばして「最初の処理」をやらせようと言う魂胆です。
次にZ80の割りこみはマスク不能割りこみ、モード0、モード1、モード2の4種類に分類されます。相手の機器に合わせてモードを選ぼうと言うわけですね。柔軟性がありますね。
マスク不能割りこみ:割りこみ処理ルーチンは0066H番地から始まる。
モード0割り込み:割りこみを受け付けると入出力装置から1バイトのサブルーチン呼び出し命令を受け取り、これをもとにサブルーチンを呼ぶ。このとき、飛べるのは、0000H、0008H、0010H、0018H、0020H、0028H、0030H、0038Hの8つのアドレスだけである。
モード1割りこみ:常に0038番地をCALLする。
モード2割り込み:割りこみを受け付けると外部装置から、1バイトのベクターを受け取りIレジスタ(ベクターテーブルの先頭を示す)と合成してベクターテーブルを参照し、そこから割りこみルーチンアドレスを得て、そこにジャンプ(CALL)する。
以上でお分かりのように、モードによっていろいろなやり方が用意されています。
それとZ80の場合、ベクターテーブルは0000Hでなく、モード2でかつ、Iレジの示す場所に存在しています。
一般論だけでなく、機種を限定しないと話がかみ合わないのがこの世界です。
Z80は寿命の長い、いいCPUです。頑張ってください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSユニオンクエリから新テ...
-
2つのテーブルに共通するレコ...
-
最新日のデータのみ抽出するク...
-
Accessのリンクされたテーブル...
-
Acccessで2つのテーブルから1...
-
access vbaにてテンポラリーテ...
-
アクセス 部分一致の抽出
-
テーブルに表示されているもの...
-
ACCESS テーブルを見比...
-
MDBファイルを比較するツール(...
-
クエリで同一テーブルの複数回...
-
Accessのテーブルで、リンク?...
-
Accessのテーブルで、不可解な...
-
Accessでリンクテーブルからロ...
-
ACCESS初心者 - 同一テーブルの...
-
ACCESS テーブルを見比...
-
access ODBCリンクテーブルの...
-
アクセスでフォームが消える(...
-
Microsoft Access 「Form」のボ...
-
Accessで、1つのマスターを複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2つのテーブルに共通するレコ...
-
最新日のデータのみ抽出するク...
-
ACCESSユニオンクエリから新テ...
-
Accessのリンクされたテーブル...
-
テーブルに表示されているもの...
-
ACCESSでテーブルをコピーしよ...
-
access vbaにてテンポラリーテ...
-
Accessでリストの並び順を変更...
-
Acccessで2つのテーブルから1...
-
Accessのテーブルで、リンク?...
-
ACCESS テーブルを見比...
-
クエリで同一テーブルの複数回...
-
ACCESS テーブルを見比...
-
accessのテーブルを閉じたとき...
-
Microsoft Access 「Form」のボ...
-
AccessVBAで任意の複数リンクテ...
-
アクセス2016 チェックボックス...
-
アクセス 部分一致の抽出
-
accessエラー回避について
-
Accesss テーブルの最終更新日...
おすすめ情報