応用情報技術者試験 応用情報技術者試験 令和6年度春期 午前8: 同一メモリ空間で,転送元の開始アドレス,転送先の開始アドレス,方向フラグ及び転送語数をパラメータとして指定することによって,データをブロック転送できる機能をもつ

応用情報技術者試験 令和6年度春期 午前
Q 88 / 80
同一メモリ空間で,転送元の開始アドレス,転送先の開始アドレス,方向フラグ及び転送語数をパラメータとして指定することによって,データをブロック転送できる機能をもつ CPU がある。図のようにアドレス 1001 から 1004 のデータをアドレス 1003 から 1006 に転送するとき,指定するパラメータとして適切なものはどれか。ここで,転送は開始アドレスから 1 語ずつ行われ,方向フラグに 0 を指定するとアドレスの昇順に,1 を指定するとアドレスの降順に転送を行うものとする。
転送元の開始アドレス転送先の開始アドレス方向フラグ転送語数
1001100304
1001100314
1004100604
1004100614
メモリのブロック転送を示す図。実行前と実行後のアドレス1000〜1007の並びと,1001〜1004から1003〜1006への転送を表す矢印
この問の正解率:63.20%(663件)

問題本文

同一メモリ空間で,転送元の開始アドレス,転送先の開始アドレス,方向フラグ及び転送語数をパラメータとして指定することによって,データをブロック転送できる機能をもつ CPU がある。図のようにアドレス 1001 から 1004 のデータをアドレス 1003 から 1006 に転送するとき,指定するパラメータとして適切なものはどれか。ここで,転送は開始アドレスから 1 語ずつ行われ,方向フラグに 0 を指定するとアドレスの昇順に,1 を指定するとアドレスの降順に転送を行うものとする。

選択肢

  • .転送元の開始アドレス 1001,転送先の開始アドレス 1003,方向フラグ 0,転送語数 4
  • .転送元の開始アドレス 1001,転送先の開始アドレス 1003,方向フラグ 1,転送語数 4
  • .転送元の開始アドレス 1004,転送先の開始アドレス 1006,方向フラグ 0,転送語数 4
  • .転送元の開始アドレス 1004,転送先の開始アドレス 1006,方向フラグ 1,転送語数 4

正解

. 転送元の開始アドレス 1004,転送先の開始アドレス 1006,方向フラグ 1,転送語数 4

解説

転送元(1001〜1004)と転送先(1003〜1006)が2語ぶん重なっているため、転送の向きを誤ると未転送のデータを上書きして壊してしまう問題である。昇順(方向フラグ0)で1001→1003から順に転送すると、1003・1004に書き込んだ値が、まだ読んでいない元データを破壊してしまう。そこで降順(方向フラグ1)に、末尾の1004→1006から1001→1003へ向かって転送すれば、各語を書き込む前に必ず読み終えており重なりがあっても正しくコピーできる。よって転送元1004・転送先1006・方向フラグ1・転送語数4のエが正解である。

選択肢ごとの解説

  • .昇順で1001→1003から転送すると、転送先1003・1004にまだ読んでいない元データ(1003・1004の値)を上書きしてしまい、データが壊れるため誤り。
  • .開始アドレスが1001・1003なのに方向フラグ1(降順)を指定すると、その開始位置から1000側へ転送が進み、対象範囲を外れてしまうため誤り。
  • .開始アドレスが末尾の1004・1006なのに方向フラグ0(昇順)では1007側へ進んでしまい、転送方向が範囲と逆で誤り。
  • .正しい。末尾の1004→1006から降順に転送すれば、上書きする前に元データを読み終えているため、領域が重なっても正しくブロック転送できる。

応用情報技術者試験 令和6年度春期 午前過去問一覧へ戻る・問8