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

令和6年度 春期 午前 問8

コンピュータ構成要素

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

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

〔図〕実行前のメモリは 1001〜1004 が網掛け(転送するデータ)。実行後は 1003〜1006 が網掛けになっており,矢印が 1001→1003,1002→1004,1003→1005,1004→1006 と対応している。

転送元の開始アドレス転送先の開始アドレス方向フラグ転送語数
ア1001100304
イ1001100314
ウ1004100604
エ1004100614
答えと解説を見る

✓ これが正解エ1004 1006 1 4

解説

重なる領域は後ろから運ぶので降順です。

設問は、1001 から 1004 のデータを 1003 から 1006 へ移すときに指定するパラメータを選ばせています。軸になるのは、送り出す範囲と受け取る範囲が 2 語ぶん重なっているという点です。1003 と 1004 は、どちらの範囲にも含まれています。アドレスの小さいほうから 1 語ずつ運ぶと、まだ読んでいない 1003 と 1004 の中身を先に書き換えてしまい、その後で運ぶ値が本来のものと違ってしまいます。そこで、アドレスの大きいほうから運びます。方向フラグに 1 を指定し、転送元の開始アドレスを 1004、転送先の開始アドレスを 1006 とすれば、書き換わるのは既に読み終えた場所だけになります。転送語数は 1001 から 1004 までの 4 語です。

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

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

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