• ベストアンサー

オペランド

基本情報技術者の問題でわからないところがあったので教えてください。 【問題】 機械語命令のインデックス就職によってオペランドアドレスを指定する場合、表に示す値のときの有効アドレスはいくらか? 【答え】 110 【表】 インデックスレジスタの値 10 命令語のアドレスの値  100 命令が格納されているアドレス 1000 【質問】 オペランドの意味はわかりますが、どうしてこうなるのわかりません。(問題の意味がわかってないかも)

  • hide_m
  • お礼率42% (323/753)

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

  • ベストアンサー
回答No.2

インデックス修飾の問題ですね。 XR1に10が入ってて 1000 LOAD GR1,100,XR1 を実行する場合、有効アドレス=アドレス100+インデックスレジスタXR1の内容=100+10=110になります。 LOAD命令で110番地の内容がGR1に入ります。

hide_m
質問者

お礼

簡単な問題だったんですね。てこずらせてすみません。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

>インデックス就職によって ひどいミスタイプです。「インデックス修飾」によって、のはずです。 修飾とは変位を加えることでベースレジスタ+インデックスレジスタの値の番地を指す仕組みになっているから100+10なのでしょう。 http://www.yos.or.tv/res1/asm/asm-302.htmlなど参照。 「命令が格納されているアドレス 1000」は、目くらましか。 アドレスで指定することがあっても最終はそのアドレスのメモリの「値」で番地計算される。

hide_m
質問者

お礼

ミスタイプ。すみませんでした。どうもありがとうございました。

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

相対アドレスと言う言葉がどこかに入っていませんでしたか。 相対アドレスなら回答の通りになります。

hide_m
質問者

お礼

相対アドレスという言葉は、入っていませんでした。 どうもありがとうございました。

関連するQ&A

  • 過去試験問題の解説が無かったので、御願いします。

    機械語命令のINDEX修飾によってオペランドアドレスを指定する、 という表現の意味を教えて下さい。

  • 計算機システム

    長文で失礼いたします。 ページ化セグメント方式を採用している仮想記憶方式の計算機について 命令をCPUに読み込んだ直後から、オペランドの読み出しが終わるまでの一連の動作をCPU内の処理と主記憶装置へのアクセスを区別して示したい。但し次の仮定を用いる。   (1)命令のアドレス部では、ベースレジスタ、インデックスレジスタおよびディスプレースメント(ベースアドレスからの変位)を指定する。   (2)セグメント表の先頭アドレスは、セグメントベースレジスタに格納されている。   (3)オペランドは主記憶装置から1回のアクセスでとりだせる。   (4)オペランドなど必要な情報の存在するページ表は主記憶装置に取り出されているものとする。 次のようになると思うのですが、途中からわからないのです。   まず、セグメントベースアドレスとベースレジスタの内容をCPU内で加算処理を行う。これにより、セグメント表のアドレスを得ることが出来る。得たセグメト表のアドレスにより主記憶にあるセグメント表にアクセスする。そのセグメント表にあるページ表の先頭アドレスの値とインデックスレジスタの値をCPUで加算処理を行うとページ表のアドレスが得られる。主記憶にあるこのページ表のアドレスにアクセスする。・・・・   その後が判らないのです。オペランドの読み出しはどこまでなんでしょうか?

  • アドレス指定方式での、命令語が参照する番地

    16進数で”C13B0206”という32ビットの命令語があります。 <命令語の仕様> 0~7ビット:命令指示部 8~10ビット:レジスタ 11~15ビット:アドレス修飾部 16~31ビット:番地 <アドレス修飾と参照番地の関係> 00 0固定 直接アドレス (11,12の値が00、13~15の値が0固定のとき、直接アドレス。) 01 0固定 間接アドレス 10 インデックスレジスタ インデックスレジスタ+番地の値 11 インデックスレジスタ インデックスレジスタ+番地が示す内容の値 <主記憶、レジスタの状態> ●主記憶に格納されている値(16進数) 番地(16進数)が  202,203,204,205,206,208,209,20A...の順に、それぞれの格納値は、 203,204,205,206,208,209,20A,20B...。 ●インデックスレジスタに格納されている値(16進数) インデックスレジスタ番号(16進数)が1,2,3,4,5… の順に、それぞれの格納値は、 0,1,2,3,4…。 (1) アドレス修飾部のインデックスレジスタ番号。 命令語の”C13B0206”で、アドレス修飾部にあたるのが”3B”。00111011(2進数)。8~10ビットの001がレジスタになるから、3。 (2)命令の番地部の番地の値(16進数) 命令の番地部の番地の値。命令部では、”0206”。ちょうど16進数なので、206。 (3) 命令が最終的に参照する番地。 上の、<主記憶、レジスタの状態>より、11~15ビットが”1011”。 インデックス番号が11(2進数)なので、3(16進数)。インデックスレジスタ番号が3のとき、格納されているのは2。番地の値である206と3を合わせ、209。 最終的に参照される番地は209。 (1)(2)(3)、自分の解き方が正しいのかどうか自信がありません。どなたか補足、訂正などありましたら、よろしくお願いいたします。

  • CPUの回路について教えてほしいです!

    ・5ビットCPU:CPUが5ビットずつ読み出し専用メモリからデータを取り込む。 ・レジスタ:2ビットを記憶できるレジスタを1つ持っている。 ・アドレス空間:CPUは2ビットの異なるアドレスを参照できる。 ・メモリ:読み出し専用メモリと書き込み専用メモリを持っている。読み出し専用は5ビット、4ワード。書き込み専用は2ビット、1ワード ・機械語:5ビット中、上位3ビットがOPコード、下位2ビットがオペランドとなる。 ・命令:CPUの命令は以下の5種類。 ・加算命令:レジスタの値とオペランドの値を加算し、その値をレジスタにセット。 ・減算命令:レジスタの値からオペランドの値を減算し、その値をレジスタにセット。 ・ロード命令:オペランドの値をレジスタにセット。 ・ストア命令:書き込み専用メモリにレジスタの数値を書き込む。下位2ビットは無視される。 ・ジャンプ命令:オペランドの値が示す読み出し専用メモリのアドレスに書かれた命令を次に実行する命令とする。 このような仕様にに基づくUPUの回路図を教えてください。 また減算命令、ジャンプ命令、メモリへの書き込みをするような回路について文章でよいので説明していただけるとありがたいです。

  • 「レジスタ」の由来は?「オペランド」とどう違うの?

    CPUが計算する時に記憶しておく装置「レジスタ」というのがありますが、そもそも「レジスタ」の名前の由来は何なんでしょうか? 「レジスタ」(register)を日本語に訳すると「登録」という意味になりますが、この「登録」の意味と記憶装置(レジスタ)はどう関係あるのでしょうか? さらに「レジスタ」と「オペランド」と「データ」は意味としては似ていると思いますが、どう違うのでしょうか? わかりやすく教えてください。 よろしくお願いいたします。

  • 2オペランドの加算命令

    2オペランドの加算命令の設計を絶対アドレス指定・相対アドレス指定・直接アドレス指定・間接アドレス指定を使うと、それぞれどのようになりますか? またそれぞれの長所・短所もお願いいたします。

  • 命令レジスタとデコーダ

    翻訳の勉強をしていて、プログラムについては門外漢です。 「命令レジスタには機械語命令が格納される」「命令レジスタに格納された命令をデコーダが解読する」とテキストに書かれているのを読みました。 機械語は既に0か1であると思うので、それをどう解読するのか、「解読」の意味が分かりません。 詳しい方、できれば簡潔に解説をお願いします。

  • インデックスアドレス指定方式とベースアドレス指定方式の違い

    アドレス指定方式(アドレシング)についての質問です。 タイトルの通り、インデックスアドレス指定方式とベースアドレス指定方式の違いを教えていただきたいです。 参考書などでは、 ●インデックスアドレス指定方式 ・命令の番地部とインデックスレジスタの値を加算した値を有効アドレスとする ・インデックスレジスタの内容を変えるだけで別なアドレスの内容が参照できる ●ベースアドレス指定方式 ・命令の番地部が指定するアドレスに、ベースレジスタの内容を加算した値を有効アドレスとする ・ベースレジスタの値を変えるだけでプログラムが主記憶装置のどこからでも実行できる(再配置可能) となっています。 有効アドレス=番地部のアドレス+レジスタの値 となるのが同じで、基準となる値がインデックスアドレス指定方式のほうでは命令の番地部であり、ベースアドレス指定方式のほうはベースレジスタの値、ということまではわかったのですが、この「基準」が違うことでどういう違いがあるのか、具体的にどういう場合にどちらの方式が使われるのかがわかりません。 ベースアドレス指定方式の「再配置可能」という部分もどういう仕組みなのか、よくわからないです。 ご回答、よろしくお願いいたします。

  • 機械語の事で質問があります。

    最近、パソコンに詳しくなろうと思い勉強している者です。 わかりにくい部分があったので質問させてください。 ある本に機械語がこのように説明されていました。 「機械語とは命令とパラメータで構成されている」 また別の本には機械語がこのように説明されていました。 「機械語は命令部(オペコード)とアドレス部(オペランド)で構成されている。」 パラメータ、アドレス部、オペランドのこれらの意味の違いとは何なんでしょうか?

  • 非常に限定された条件での8バイト加算

    アセンブリプログラム上で16ビット同士を加算したいと考えています。 ただ、非常に条件が限定されていて、 【簡単な構成について】 ・レジスタは8ビットAレジスタ一つのみ ・8ビット演算器(ALU)は一つのみ ・条件コードはZフラグのみ(ただし、書き換わるのは命令7.、8.でのみ) 【使える命令】 1.Aレジスタに即値をロード 2.Aレジスタに指定アドレスのデータをロード 3.Aレジスタから指定アドレスにストア 4.無条件分岐 5.Aレジスタand即値=0ならば分岐 6.Aレジスタor即値=0ならば分岐 7.Aレジスタと即値のandをとって書き戻し 8.Aレジスタと即値のorをとって書き戻し 9.Aレジスタと即値を加算して書き戻し a.Aレジスタと指定アドレスのEORをとって書き戻し b.Aレジスタと指定アドレスのデータを加算して書き戻し c.間接アドレスのデータをAレジスタにロード d.Aレジスタの内容を間接アドレスにストア e.Aレジスタから即値を減算して書き戻し f.Aレジスタから指定アドレスデータを減算して書き戻し 普通に考えるならば、下位8ビット同士の加算、上位8ビット同士と下位8ビットのキャリーを加算すれば出来ます。 しかしながら、この限定された条件に於いてはなんらかの自由に使えるフラグ、もう少し汎用的に使える分岐命令が無ければ無理だと個人的には考えています。 出来るか、出来ないか、だけでも結構ですので、ご教授お願いします。