IPA過去問ドリル

令和6年度 春期 応用情報技術者試験 午前 問8

テクノロジ/コンピュータ構成要素

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

令和6年度 春期 応用情報技術者試験 午前 問8の図

出典:令和6年度 春期 応用情報技術者試験 午前 問8

正解:エ

解説

アドレス1001〜1004のデータをアドレス1003〜1006へ転送する場合,両範囲は1003・1004で重なっています。アドレスの昇順(開始アドレス1001,方向フラグ0)で転送すると,1002番地のデータを1004番地へ書き込む際に,まだ転送前の1004番地の元データを上書きしてしまい破壊されます。重なりを避けるには,アドレスの大きい方(末尾)から降順に転送する必要があるため,転送元の開始アドレスは1004,転送先の開始アドレスは1006,方向フラグは1(降順),転送語数は4とするのが正しい設定です。

選択肢ごとの解説

  • 誤り。開始アドレス1001から昇順(方向フラグ0)で転送すると,重なった領域のデータを転送前に上書きしてしまい,正しく転送できません。
  • 誤り。降順(方向フラグ1)を指定していますが,開始アドレスが1001(先頭)のままでは降順走査の起点として誤りで,正しいデータ範囲を転送できません。
  • 誤り。開始アドレスは末尾側の1004・1006になっていますが,方向フラグが0(昇順)のままでは,そこから先のアドレス(1005以降)へ進んでしまい,本来の範囲を転送できません。
  • 正しい。末尾のアドレス(1004→1006)から降順(方向フラグ1)で4語転送すれば,重なった領域を上書きする前に転送を終えられます。
応用情報技術者の過去問を演習モードで解く