過去問解きまくり研究所 ホーム

平成31年度 春期 午前 問9

コンピュータ構成要素

ブロック転送に関する問題

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

実行前  アドレス 1000 … 空
        アドレス 1001 ┐
        アドレス 1002 │ この4語(網掛け)が
        アドレス 1003 │ 転送される中身
        アドレス 1004 ┘
        アドレス 1005 … 空
        アドレス 1006 … 空
        アドレス 1007 … 空
実行後  アドレス 1003 〜 1006 が網掛け(=1001〜1004 の内容が入る)
        矢印は 1001 → 1003 / 1004 → 1006
転送元の開始アドレス転送先の開始アドレス方向フラグ転送語数
ア1001100304
イ1001100314
ウ1004100604
エ1004100614
答えと解説を見る

✓ これが正解エ1004 1006 1 4

解説

重なる領域は、後ろから逆順に運べば壊さずに済みます。

同じメモリ内で範囲が重なる転送では、書く先と読む元が同じ番地を含むため、順序を誤ると先に書いた値が後で読むべき元の値を上書きしてしまいます。設問では 1001〜1004 の中身を 1003〜1006 へ動かすので、番地が上に 2 だけずれた位置に重なりが生じています。先頭から昇順に書くと、1003 に書いた値が、すぐ後で読む必要のある 1003 の元の値を上書きしてしまいます。末尾から降順で写せば、まず 1004 の値を 1006 に置き、次に 1003 を 1005 に置くというように、読む元がまだ書き換わっていない状態を保てます。この場合、開始番地は転送元・転送先とも末尾側を指し、方向フラグには降順の指定を渡します。

ほかの選択肢はなぜ違うのか

出典:平成31年度 春期 応用情報技術者試験 午前 問9

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)