同一メモリ上で転送するとき、転送元の開始アドレス、転送先の開始アドレス、方向フラグ及び転送語数をパラメータとして指定することでブロック転送が行えるCPUがある。
図のようにアドレス1001から1004の内容をアドレス1003から1006に転送する場合、パラメータとして適切なのものはどれか。
ここで、転送は開始アドレスから1語ずつ行われ、方向フラグに0を指定するとアドレスの昇順に、1を指定するとアドレスの降順に転送を行うものとする。
転送元の開始アドレス | 転送先の開始アドレス | 方向フラグ | 転送語数 | |
ア | 1001 | 1003 | 0 | 4 |
イ | 1001 | 1003 | 1 | 4 |
ウ | 1004 | 1006 | 0 | 4 |
エ | 1004 | 1006 | 1 | 4 |
答え エ
【解説】
ア | アドレス1001→アドレス1003、アドレス1002→1004、アドレス1003→アドレス1005とデータの転送が行われるが、アドレス1003の内容が既にアドレス1001の内容に書き換わっているので、正しい転送ができない。 |
イ | アドレス1001→アドレス1003、アドレス1000→アドレス1002…となり意図する転送ができない。 |
ウ | アドレス1004→アドレス1006、アドレス1005→アドレス1007…となり意図する転送ができない。 |
エ | アドレス1004→アドレス1006、アドレス1003→アドレス1005、アドレス1002→アドレス1004、アドレス1001→アドレス1003と正しいデータの転送が行われ、データの破壊も発生しない。 |
【キーワード】
・ブロック転送