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

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

プロセッサ

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

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

転送の実行前と実行後のメモリ:

アドレス実行前実行後
1000白白
1001網掛け白
1002網掛け白
1003網掛け網掛け
1004網掛け網掛け
1005白網掛け
1006白網掛け
1007白白

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

答えと解説を見る

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

解説

重なる領域を後ろへずらすので、末尾から降順に転送します。

転送元の1001〜1004と転送先の1003〜1006は、1003と1004の2語が重なっています。転送先が転送元より大きいアドレスにあるとき、昇順に1語ずつ写すと、まだ読んでいない1003の内容を先に上書きしてしまいます。そこで末尾から始めます。転送元の開始アドレスを1004、転送先の開始アドレスを1006とし、方向フラグを1(降順)にすると、1004→1006、1003→1005、1002→1004、1001→1003の順に写り、どの語も上書きされる前に読み出せます。転送語数は4です。重なりのあるブロック転送では、ずらす向きの側の端から写し始める、と覚えておくと迷いません。

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

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

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