![]()
平成23年 春期 基本情報技術者 午後 問12
問12 CASL次のアセンブラプログラムの説明及びプログラムを読んで,設問1〜3に答えよ。 〔プログラム1の説明〕 連続する 16 語に格納した 16 × 16 ドットの白黒の図形を,時計回りに 90 度回転する 副プログラム ROTATE である。図形の回転の実行例を図1に示す。このとき,1ドットを1ビットで 表し,白は0,黒は1が格納されている。 (1) 図形を表す 16 語の先頭アドレスは GR1 に設定されて,主プログラムから渡される。 (2) 回転した結果の図形を格納する領域の先頭アドレスは GR2 に設定されて, 主プログラムから渡される。 (3) 元の図形と回転した図形は,異なる領域に格納される。 (4) 副プログラムから戻るとき,汎用レジスタ GR1 〜 GR7 の内容は元に戻す。 ![]() 図1 図形の回転の実行例 (行番号 ) 1 ROTATE START 2 RPUSH 3 LD GR3,=16 4 LOOP1 LD GR4,=16 5 LD GR5,GR2 ; GR5 ← 結果の領域のアドレス 6 LD GR6,0,GR1 ; GR6 ← 元の図形の先頭語の内容 7 LOOP2 LD GR7,0,GR5 ; GR7 ← 結果の領域の1語の内容 8 SRL GR7,1 9 SLL GR6,1 10 JOV ON 11 JUMP CONT 12 ON OR GR7,=#8000 13 CONT ST GR7,0,GR5 ; 処理した1語を結果の領域に格納 14
設問1 プログラム1中の 解答群
エ LAD GR2,1,GR2 オ LAD GR5,-1,GR5 カ LAD GR5,1,GR5
設問2 行番号9を次のとおりに変更し,図1の回転前を元の図形として実行した。実行結果の 図形として正しい答えを,解答群の中から選べ。
SRL GR6,1解答群
![]()
設問3 プログラム1中の行番号3,4をプログラム2に置き換えて, 16 × 16 ドットの図形のうち 左上の n × n ドットの部分だけを時計回りに 90 度回転するプログラムとした。左上の 8 × 8 ドットの部分だけを回転した実行例を図2に示す。 値 n ( 1 ≦ n ≦ 16 )は GR3 に設定されて主プログラムから渡される。 置換え後のプログラムは,まず,回転の対象とならないドット(元の図形の上 n 語の右 ( 16 − n ) ビットと下( 16 − n )語の全ビット)を結果の領域の適切な場所に複写する。その後,左上の n × n ドットの部分を回転して結果の領域に格納する。
プログラム2の ![]() 図2 左上の 3 × 8 ドットの部分だけを回転した実行例 ST GR3,N ; n を保存 LD GR4,GR3 ; GR4 ← n LD GR5,GR1 ; GR5 ← 元の図形のアドレス LD GR6,GR2 ; GR6 ← 結果の領域のアドレス LD GR7,=16 SUBA GR7,GR3 ; GR7 ← 16-n SHIFT LD GR0,0,GR5 ; GR0 ← 元の図形の1語の内容 c に関する解答群
エ SRL GR0,0,GR3 d に関する解答群
エ JZE LOOP1
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
|