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

平成24年度 春期 午前Ⅱ 問2

プロセッサ

方向フラグに関する問題

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

ブロック転送の図(原典は図。書き写した内容):

実行前: アドレス1000〜1007のうち,1001〜1004が転送対象(網掛け)
実行後: アドレス1000〜1007のうち,1003〜1006が転送結果(網掛け)
矢印: 実行前の1001〜1004 → 実行後の1003〜1006

選択肢は原典では転送元の開始アドレス・転送先の開始アドレス・方向フラグ・転送語数の表。

答えと解説を見る

✓ これが正解エ転送元の開始アドレス:1004 / 転送先の開始アドレス:1006 / 方向フラグ:1 / 転送語数:4

解説

重なる範囲の転送は、末尾の1004から降順に送れば壊れません。

転送元と転送先のアドレス範囲が重なるときは、まだ読んでいない転送元を先に上書きしない順序を選ぶのが軸です。転送元は1001〜1004、転送先は1003〜1006で、1003と1004が重なっています。昇順で1001から送ると、1001の内容が1003へ書かれた時点で、まだ送っていない1003の元の内容が消えてしまいます。そこで末尾から送ります。転送元の開始を1004、転送先の開始を1006、方向フラグを1(降順)、転送語数を4とすると、1004→1006、1003→1005、1002→1004、1001→1003の順に進み、どれも上書きされる前に読み出されます。転送先が後ろへずれる重なりは後ろから送る、と覚えましょう。

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

出典:平成24年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問2

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