転送元と転送先が重なるブロック転送のパラメータ指定

転送元領域(1001〜1004)と転送先領域(1003〜1006)は,アドレス 1003 と 1004 の部分が重複しています。 もしアドレスの昇順(方向フラグ 0)で転送を行うと,次のような上書き破壊が発生します。 1語目:1001 のデータを 1003 に転送(1003 の元データが上書きされる) 2語目:1002 のデータを 1004 に転送(1004 の元データが上書きされる) 3語目:1003 のデータを 1005 に転送しようとするが,1003 には既に 1001 のデータが書き込まれており,本来の 1003 のデータが失われてしまう このように転送先が転送元より後方(高いアドレス)にある場合は,データの破壊を防ぐために「降順(方向フラグ 1)」で後ろから順に転送する必要があります。 降順転送では末尾アドレスから開始するため,転送元の開始アドレスは 1004,転送先の開始アドレスは 1006 となり,転送語数は 4 語です。 したがって,適切なパラメータは「転送元開始アドレス: 1004,転送先開始アドレス: 1006,方向フラグ: 1,転送語数: 4」であり,正解はエとなります。 降順なら、上書きされる 1004・1003 は先に読み終わっているので壊れません。転送先が転送元より 高いアドレス側に重なるときは降順 、低いアドレス側に重なるときは昇順で転送します。

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

問8 メモリブロック転送図
出典令和6年度 春期 応用情報技術者試験 午前 問8

転送元の開始アドレス

転送先の開始アドレス

方向フラグ

転送語数

ア

1001

1003

0

4

イ

1001

1003

1

4

ウ

1004

1006

0

4

エ

1004

1006

1

4